【问题标题】:Get string result from function React Native从函数 React Native 获取字符串结果
【发布时间】:2019-02-22 01:49:44
【问题描述】:

我创建了一个连接redux的组件,并返回当前加载的item's名称作为导航标题。

但是当我尝试从此组件获取标题时,它会因以下错误而中断:

Error: `title` cannot be defined as a function in navigation options for `StockScreen` screen. 

Try replacing the following:
{
    title: ({ state }) => state...
}

with:
({ navigation }) => ({
    title: navigation.state...
})

这是我的组件:

import { connect } from 'react-redux';

let Title = () => {
    if(this.props.item === null || this.props.item === undefined, this.props.item === {}) {
        return '';
    }else{
        return this.props.item.TradeName;
    }
}

const mapStateToProps = state => ({
    item: state.stockItem.item,
});

export default ConnectedTitle = connect(mapStateToProps)(Title);

这就是我尝试在我的反应导航堆栈中实现它的方式:

const Stack = createStackNavigator(
    {
        Home: {
            screen: Tabs,
            navigationOptions: {
                header: null,
            },
        },
        StockModal: {
            screen: StockModal,
            navigationOptions: {
                header: null,
            },
        },
        StockScreen: {
            screen: StockScreen,
            navigationOptions: {
                headerRight: (<ConnectedSaveButton/>),
                title: ConnectedTitle,
            },
        },
    },
    {}
);

【问题讨论】:

  • 我不知道你想在这里实现什么。但是您应该使用 ConnectedTitle() 来运行该功能。试试标题:ConnectedTitle(),
  • 我试过了,但我得到'不能将一个类称为函数'

标签: reactjs react-native redux react-redux react-navigation


【解决方案1】:

您正在将一个 React 组件传递给导航选项中的标题,而它应该是一个字符串。我认为你需要使用 headerTitle 来实现你想要的

StockScreen: {
    screen: StockScreen,
    navigationOptions: {
        headerRight: (<ConnectedSaveButton/>),
        headerTitle: (<ConnectedTitle />),
    },
}

来自文档

标题

可用作 headerTitle 的后备字符串。此外,将用作 tabBarLabel 的后备(如果嵌套在 TabNavigator)或drawerLabel(如果嵌套在DrawerNavigator中)。

标题标题

标头使用的字符串、React 元素或 React 组件。默认为场景标题。当一个组件被使用时,它接收 allowFontScaling、style 和 children 道具。标题字符串被传递 在儿童中。

【讨论】:

  • 嘿,非常感谢,我确实意识到它需要一个字符串,我只是想用一些逻辑和 redux 生成一个字符串;但是,正如您指出的那样,您无法真正做到这一点,但是我使用了 headerTitle 并且效果很好。我认为 headerTitle 是一个东西,但我的自动完成失败了,所以我认为它不存在,显示我没有正确阅读文档! (PS,考虑到我是如何使用 headerRight lmao 的,我应该知道的)
  • 有时在您的应用程序中使用所有这些层(如 redux / react-navigation)时,很难理解问题到底出在哪里......我很高兴能够提供帮助:)
  • 确实,第一次使用 react、react-native 和 redux,所以当我遇到问题时,感觉不知所措!但是 redux 很棒,我很高兴我学会了所有这些
猜你喜欢
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多