React-Navigation: TabNavigator 中的动态标题。未定义不是 object

React-Navigation: Dynamic Title in TabNavigator. Undefined in not an object

我刚开始使用 React NavigationTabNavigator

我有 2 个选项卡:ChannelScreen 和 ListScreen。 当我单击 ListScreen 中的频道之一时,ChannelScreen 的标题应该被替换。

频道屏幕:

export default class ChannelScreen extends React.Component {
  static navigationOptions = ({ navigation }) => ({
    title: `${navigation.state.params.title}`,
  })

列表屏幕:

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 传递标题时,我得到了这个错误:

Undefined in not an object (evaluating 'navigation.state.params.title')

我也试过 setParams- 我也没有让它在 TabNavigator 中工作。 您对我有什么指点或建议吗?

这是因为第一次渲染时没有设置参数,所以你需要添加条件渲染来做到这一点,我试过你的代码,得到了这个解决方案,你可以尝试将你的 ChannelScreen 改成这样:

export default class ChannelScreen extends React.Component {
  static navigationOptions = ({ navigation }) => ({
    title: navigation.state.params ? `${navigation.state.params.title}` : 'Default Title in Here',
  })

希望对你有所帮助,如有错误请指出我谢谢:)