this.props.navigation.navigate()未定义

时间:2020-04-02 15:08:15

标签: react-native

我正在这样使用createStackNavigator。

const ChatStack = createStackNavigator({
  Profiles: Profiles,
  ChatScreen: ChatScreen
})

const RootChatStack = createStackNavigator({
  Home: ChatStack,
  ModalScreen: ProfileModalScreen
},{
    mode: 'modal',
    headerMode: 'none',
  })

在个人资料中,我使用props.navigation.navigate('ChatScreen',{name: item.content })转到ChatScreen。

在ChatScreen中

class Example extends React.Component {
  static navigationOptions = ({navigation}) => {
    return {
    title: navigation.getParam('name', ''),
  };
 ...
  renderModal() {
    this.props.navigation.navigate('ModalScreen')
  }
 ...
 }

我可以使用navigationOptions设置标题,但是当我使用this.renderModal()时, 它给我错误

undefined is not an object (evaluating '_this2.props.navigation')

如何在示例组件中使用navigation.navigate?

1 个答案:

答案 0 :(得分:1)

如果您使用的是基于class的react组件,则必须将组件中的其他功能绑定到实例。您可以通过将this显式绑定到组件中的每个附加函数来实现(已经绑定了render()之类的反应函数)。

这是以下代码段中的关键行: this.renderModal = this.renderModal.bind(this);

class Example extends React.Component {
  constructor(props) {
    super(props);

    this.renderModal = this.renderModal.bind(this);
  }

  renderModal() {
    this.props.navigation.navigate('ModalScreen');
  }

  ...
 }