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

问题描述 投票:2回答:1

我创建了一个连接到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,
            },
        },
    },
    {}
);
reactjs react-native redux react-redux react-navigation
1个回答
1
投票

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

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

从文档中

标题

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

headerTitle

标头使用的字符串,反应元素或反应组件。默认为场景标题。使用组件时,它会收到allowFontScaling,style和children props。标题字符串在子节点中传递。

© www.soinside.com 2019 - 2024. All rights reserved.