React / Redux错误的上下文

时间:2018-09-27 16:04:16

标签: reactjs react-native

好的,因为我对React很有经验,所以这很尴尬,但是我很难理解为什么this.props组件方法中无法识别handlePress了。

我不确定为什么我可以通过以下方法访问this.props

  • renderError()
  • renderButton()

但是当我尝试在handlePress内调用this.props时,React说它是未定义的。在下面的代码中,您可以看到我在按钮上附加了onPress处理程序,该处理程序调用{​​{1}}。 handlePress方法已正确调用,但是当我尝试访问其中的道具时,应用程序崩溃了。

除非我在构造函数内部使用handlePress,否则这将不起作用。当我不将其绑定到构造函数中时,为什么不能在其他方法中访问正确的上下文,我感到困惑。

有帮助吗?

this.handlePress = this.handlePress.bind(this)

1 个答案:

答案 0 :(得分:3)

写时:

<Button onPress={this.handlePress}>
    Login
</Button>

您不是在当前组件的上下文中调用handlePress函数,而是将其引用分配给传递给Button的onPress道具。

现在,当按钮触发handlePress方法时,即获取上下文。它不会引用您要在其中运行的上下文,除非您在构造函数中绑定了handlePress方法或使用箭头函数(如

<Button onPress={(e) => this.handlePress(e)}>
    Login
</Button>

handlePress = (e) => {}