React native Can';t访问本机之外的道具

React native Can';t访问本机之外的道具,react-native,react-props,React Native,React Props,我正在React Native中开发一个应用程序,在访问我输入到我制作的组件中的道具时遇到问题 如果我在构造函数中执行console.log(this.props),我可以根据需要看到控制台中显示的道具,但是如果我将其放在任何其他方法中,它会打印未定义的道具。如何访问显然从构造函数方法外部发送到组件的道具?您可能正在添加不绑定此的新方法 检查您是否正在这样编写方法: myMethod(){ //Code } 只需将其更改为: myMethod = () => { //Code }

我正在React Native中开发一个应用程序,在访问我输入到我制作的组件中的道具时遇到问题


如果我在构造函数中执行
console.log(this.props)
,我可以根据需要看到控制台中显示的道具,但是如果我将其放在任何其他方法中,它会打印未定义的道具。如何访问显然从构造函数方法外部发送到组件的道具?

您可能正在添加不绑定此的新方法

检查您是否正在这样编写方法:

myMethod(){
  //Code
}
只需将其更改为:

myMethod = () => {
  //Code
}
编辑:正如@Li357所说,这些函数称为箭头函数。Arrow函数不会自动绑定它,因此会接收周围类的this。在您的情况下,它将解决您的问题,因为您希望访问该类的属性,但您可能希望了解它以及绑定如何在JS类中工作


另一种方法是编写function.bind(),但两种方法都可以

您可能正在添加不绑定此
的新方法

检查您是否正在这样编写方法:

myMethod(){
  //Code
}
只需将其更改为:

myMethod = () => {
  //Code
}
编辑:正如@Li357所说,这些函数称为箭头函数。Arrow函数不会自动绑定它,因此会接收周围类的this。在您的情况下,它将解决您的问题,因为您希望访问该类的属性,但您可能希望了解它以及绑定如何在JS类中工作


另一种方法是编写function.bind(),但两种方法都可以

如果它是一个事件处理程序,您需要绑定它。非常感谢!这解决了我的问题!如果它是一个事件处理程序,您需要绑定它。非常感谢!这解决了我的问题!您建议使用箭头函数不是标准的,但最好注意一下。Arrow函数根本不绑定
,因此会接收周围类的
。@Li357我认为使用Arrow函数也是一种实用的方法,而不是绑定内部的所有函数constructor@Li357在“不完全自动绑定”这句话上很公平,但是“arrow函数不是标准的”是一个错误。它们被广泛使用,并且在RN中没有任何问题。@sfratini澄清一下,我指的是类属性(包括作为arrow函数的类属性)。它们没有完全标准化,因为它们被合并到公共和私有类属性提案中-RN jut提供内置巴别塔功能。无论如何,认为箭头函数神奇地绑定了这一点的误解是不正确的。@Li357啊,是的,理解。我只是觉得它们被巴别塔广泛使用和支持,因此警告是not甚至需要,但需要注意。您建议使用arrow函数不是标准的,但值得注意。arrow函数根本不绑定
this
,因此会收到周围类的
this
。@Li357我认为使用arrow函数也是一种实用的方法,而不是在I中绑定所有函数判定元件constructor@Li357在“不完全自动绑定”这一点上很公平,但“箭头函数不是标准的”是远远不够的。它们被广泛使用,并且为RN提供零问题。@sfratini为了澄清,我指的是类属性(包括作为箭头函数的类属性)。它们没有完全标准化,因为它们被合并到公共和私有类属性提案中-RN jut提供内置巴别塔功能。无论如何,认为箭头函数神奇地绑定了这一点的误解是不正确的。@Li357啊,是的,理解。我只是觉得它们被巴别塔广泛使用和支持,因此警告是not甚至需要,但注意到了。