将参数传递给reactjs单击处理程序

时间:2015-03-21 21:35:38

标签: javascript reactjs

我有一个关于将参数传递给React点击处理程序的问题。 我有以下代码,但由于某种原因,节点参数未传递给toggle函数。不应该吗?它是以这种方式定义的,因为它是一个递归组件。

var Element = React.createClass({

    toggle: function(e,node){

    },

    render: function(){

        var nodes = this.props.children.map(function(n){

                return <Element node={n} text={n.text} children={n.children}  />

        });

        return (
               <span onClick={this.toggle.bind(this,this.props.node)}>{this.props.text}</span>

        );
    }

});

1 个答案:

答案 0 :(得分:23)

Function.prototype.bind从左开始绑定参数。接收节点参数的正确方法是在参数列表的最左侧位置查找它:

toggle: function(node, event) {
  console.log('node', node);
  console.log('event', event);
}

有关示例,请参阅http://jsfiddle.net/8xxfgce7/