在自己的函数中反应导航onPress

时间:2017-06-14 07:20:55

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

我已经在教程https://reactnavigation.org/docs/intro/中实现了React Navigation示例,它运行正常。

<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不是对象(评估this.props.navigation)

1 个答案:

答案 0 :(得分:3)

一切正常,您只需要绑定_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内定义constructor方法的绑定:

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>
    );
}
相关问题