onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={this.onTypeSelect('type1').bind(this)}>
</TouchableOpacity>
未定义不是对象(正在评估'_this3.onTypeSelect('type1).bind')。我在调用带参数的函数时出错了
任何人都可以帮助我吗?我是反应原生的初学者。
onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={this.onTypeSelect('type1').bind(this)}>
</TouchableOpacity>
未定义不是对象(正在评估'_this3.onTypeSelect('type1).bind')。我在调用带参数的函数时出错了
任何人都可以帮助我吗?我是反应原生的初学者。
试试这个
onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={() => { this.onTypeSelect('type1'); }} />
当你.bind(本),你需要传递一个函数,而不是函数的返回值,在这种情况下,undefined
。这种方式起作用,因为该功能是从组件范围内调用的,因此使this
成为有效的参考。
另一种方式来解决这个问题是通过使用绑定是这样的:
this.onTypeSelect.bind(this, 'type1')
编辑:感谢您的意见和对方回复,我增加了完成信息的缘故信息。 Alexander T.,Bartek F.
它的工作原理!谢谢。 – mojizo
您的代码有效,但解释不正确。 *当你.bind(this)时,范围是当前的HTMLDOMElement,* - 这不是真的。 'this'指向绑定时的组件。问题是应该在函数本身使用'bind',而不是函数返回的结果。有关详细说明,请参阅@Alexander .answer –