Javascript React onClick事件产生:“一次点击”;未捕获的TypeError:无法读取未定义的属性";,尽管有约束力
我正在编写一个React脚本,该脚本将从先前定义的数组中呈现一组Javascript React onClick事件产生:“一次点击”;未捕获的TypeError:无法读取未定义的属性";,尽管有约束力,javascript,reactjs,bind,Javascript,Reactjs,Bind,我正在编写一个React脚本,该脚本将从先前定义的数组中呈现一组元素 ... render: ... var behaviourComponents = this.props.myObjectArray.map(function(element) { return <a className="crumbFile" onClick={this._myFunction.bind(this,element.value1)}>{element.
元素
...
render:
...
var behaviourComponents = this.props.myObjectArray.map(function(element) {
return <a className="crumbFile" onClick={this._myFunction.bind(this,element.value1)}>{element.value2}</a>;
});
return (
...
<div>{behaviourComponents}</div>
...)
。。。
提供:
...
var behaviorComponents=this.props.myObjectArray.map(函数(元素){
返回{element.value2};
});
返回(
...
{组件}
...)
当没有onClick的函数调用时,这可以正常工作。但是,当出现错误时,我得到错误:“uncaughttypeerror:无法读取未定义的属性'\u myFunction'
这是非常奇怪的,因为我有一个组件,它前面有一个onClick函数调用,可以正常工作(
Load
),这让我觉得这是一个范围问题,因为map()函数。但是,我使用了.bind(),所以我不太确定这里出了什么问题。这是因为传递给map()
的函数中的上下文没有引用React组件类。默认情况下,上下文是全局窗口对象
有几种方法可以解决此问题:
1) 将此的正确上下文绑定到传递给map()
的函数
2) 将正确的上下文作为第二个参数传递给map()
3) 使用ES6 arrow函数,它将为您绑定正确的上下文
this.props.myObjectArray.map(element => {
...
});
this.props.myObjectArray.map(function(element) {
...
}, this);
this.props.myObjectArray.map(element => {
...
});