开发者问题收集

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

2017-06-14
5089

我已按照教程 https://reactnavigation.org/docs/intro/ 中的说明实现了 React Navigation 示例,并且运行良好。

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

我不想直接在 onPress 中调用 navigation,而是想在单独的函数 btnToChat 中调用它。我尝试使用 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个回答

一切正常,您只需绑定 _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>
    );
}

或者在 constructor 中定义 _btnToChat 方法的绑定:

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>
    );
}
Mayank Shukla
2017-06-14