reactjs - 在自己的函数中响应导航 onPress

标签 reactjs react-native native react-native-navigation

我已经实现了教程中的 React Navigation 示例 https://reactnavigation.org/docs/intro/而且效果很好。

<Button
  onPress={() => navigate('Chat')}
  title="Chat with Lucy"
/>

我想在单独的函数 btnToChat 中调用它,而不是直接在 onPress 中调用导航。我尝试用 this.props.navigation.navigate 调用它,但它不起作用。你有什么建议吗?谢谢!

btnToChat(){
  console.log("test");
  this.props.navigation.navigate('Chat');    
}
render() {
  const { navigate } = this.props.navigation;
return (
  <View>
    <Button
      onPress={this._btnToChat}
    />
  </View>
    );
  }
}

出现以下错误:undefined is not an object (evaluating this.props.navigation)

最佳答案

一切正常,您只需绑定(bind) _btnToChat 方法即可访问(正确的上下文)其中的 this 关键字。

像这样:

btnToChat = () => {                      //here use arrow  function
    console.log("test");
    this.props.navigation.navigate('Chat');    
}

render() {
    const { navigate } = this.props.navigation;
    return (
        <View>
            <Button
                onPress={this._btnToChat}
            />  
        </View>
    );
}

或者在构造函数中定义_btnToChat方法的绑定(bind):

constructor(){
   super();
   this._btnToChat = this._btnToChat.bind(this);
}

btnToChat (){           
    console.log("test");
    this.props.navigation.navigate('Chat');    
}

render() {
    const { navigate } = this.props.navigation;
    return (
        <View>
            <Button
                onPress={this._btnToChat}
            />  
        </View>
    );
}

关于reactjs - 在自己的函数中响应导航 onPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538072/

相关文章:

reactjs - 如果应用程序关闭,则 React-Native 深层链接不起作用(React-Navigation v5)

javascript - ValidatedMethod 中的 Meteor this.unblock

reactjs - 我可以更改图表中 YAxis 中特定值的样式吗?

react-native - react native Expo环境变量

angular - 如何在 ionic 2 应用程序中自动更新谷歌地图上的当前位置

android - Phonegap 中的原生 Android 菜单。无法让我的代码工作

.net - 在 Powershell v3 中无需调用外部 EXE 即可确定 .NET 程序集是否为混合模式

javascript - React 被视为一个库,Angular 被视为一个框架。为什么这样?

javascript - 如何在 React 执行时禁用点击事件?

ios - 世博会应用程序 'Your app is using the Advertising Identifier (IDFA)'