【发布时间】:2017-04-06 12:08:59
【问题描述】:
我刚刚开始使用 ReactJS,但我不知道如何使 onClick 事件在 map 函数中工作,该函数会呈现一些类似的元素。 当我不在子元素中使用 onClick={this.someMethodName} 时,一切正常,所以我猜测“this”关键字不再指代父元素。
这是我的代码,它呈现一个简单的菜单栏:
var SupplierBarComponent = React.createClass({
doSomething: function () {
console.log("aaaaaaaah");
},
render: function() {
const suppliers = this.props.data.map(function(supplier){
return (
<option onClick={this.doSomething} key={supplier.id}>{supplier.name}</option>
);
}, this);
return(
<div>{suppliers}</div>
);
}
我怎样才能让它工作? 我已经阅读了一些类似的问题*,但他们的解决方案对我不起作用,或者我无法让它们起作用。
*: React onClick inside .map then change data in another sibling component "this" is undefined inside map function Reactjs Pass props to parent component in React.js
【问题讨论】:
-
如果你在 map 函数中 console.log 这个是返回组件对象吗?
-
是的,确实如此。如果我通过 console.log(this.doSomething) 调用它 - 所以没有 ()s,它会打印函数本身: 3models.jsx:9() { console.log("aaaaaaah");如果我用括号调用它,它首先打印“未定义”,但该函数仍然被调用,它打印出“aaaah”。
-
你需要做
this.doSomething.bind(this)??取决于您在 doSomething 中对 this 的使用?此外,您应该获得一个包含更多信息的合成事件对象...
标签: javascript reactjs