从函数React Native获取字符串结果

时间:2018-09-18 05:34:26

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

我创建了一个连接到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);

这就是我尝试在我的react-navigation堆栈中实现它的方式:

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

1 个答案:

答案 0 :(得分:1)

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

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

从文档中

  

标题

     

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

     

headerTitle

     

标题使用的字符串,React元素或React组件。默认为场景标题。使用组件时,它会收到   allowFontScaling,样式和儿童道具。标题字符串被传递   在儿童中。