我创建了一个连接到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,
},
},
},
{}
);
答案 0 :(得分:1)
您正在将React组件传递给导航选项中的标题,尽管它应该是字符串。我认为您需要使用headerTitle来实现所需的目标
StockScreen: {
screen: StockScreen,
navigationOptions: {
headerRight: (<ConnectedSaveButton/>),
headerTitle: (<ConnectedTitle />),
},
}
从文档中
标题
可用作headerTitle的备用的字符串。此外,将用作tabBarLabel的后备(如果嵌套在 TabNavigator)或抽屉标签(如果嵌套在DrawerNavigator中)。
headerTitle
标题使用的字符串,React元素或React组件。默认为场景标题。使用组件时,它会收到 allowFontScaling,样式和儿童道具。标题字符串被传递 在儿童中。