我刚开始使用React Navigation
和TabNavigator
。
我有两个标签:ChannelScreen& ListScreen。 当我点击ListScreen中的一个频道时,应该替换ChannelScreen的标题。
ChannelScreen:
export default class ChannelScreen extends React.Component {
static navigationOptions = ({ navigation }) => ({
title: `${navigation.state.params.title}`,
})
ListScreen:
export default class ListScreen extends Component {
handlePress = (channelKey, channelName) => {
console.log('change channel', channelKey, channelName)
this.props.navigation.navigate('ChannelScreen', { title: channelName });
}
render() {
return(
<View style={styles.container}>
<TouchableOpacity
style={styles.channelCard}
onPress={() => {
this.handlePress('01','Channel 1')
}}
>
<Text>Channel 1</Text>
</TouchableOpacity>
</View>
)
}
}
(我简化了我的代码 - 希望我没有弄乱任何东西)
如果我通过StackNavigator
中的参数,一切正常。虽然当我尝试通过TabNavigator
传递标题时,我收到此错误:
未在对象中定义(评估&#39; navigation.state.params.title&#39;)
我也试过了setParams
- 我也没有让它在TabNavigator
中工作。
你对我有什么指示或建议吗?
答案 0 :(得分:3)
export default class ChannelScreen extends React.Component {
static navigationOptions = ({ navigation }) => ({
title: navigation.state.params ? `${navigation.state.params.title}` : 'Default Title in Here',
})
我希望它可以帮到你,如果你有错误,请注意我,谢谢:)