ReactJS在map函数中的onClick事件,然后调用parent的函数

时间:2016-11-22 17:39:13

标签: javascript reactjs

我刚刚开始使用ReactJS,我无法弄清楚如何使onClick事件在map函数中工作,这会渲染一些类似的元素。 当我在子元素中没有使用onClick = {this.someMethodName}时,一切都运行正常,所以我猜这个'这个'关键字不再是指父母。

这是我的代码,它呈现一个简单的菜单栏:

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

1 个答案:

答案 0 :(得分:2)

您的代码正常运行。我已经在这个小提琴上检查了它。我只是硬编码了一个数组而不是道具。

var Hello  = React.createClass({
doSomething: function () {
    console.log("aaaaaaaah");
},

render: function() {
        var data=[{id:1,name:'name 1'},{id:2,name:'name 2'}]
    const suppliers = data.map(function(supplier){
        return (
            <option onClick={this.doSomething} key={supplier.id}>{supplier.name}</option>
        );
    }, this);

    return(
        <div>{suppliers}</div>
    );
}
})

ReactDOM.render(
  <Hello />,
  document.getElementById('container')
);

https://jsfiddle.net/evweLre5/