在事件处理程序回调中传递事件+参数

时间:2016-09-10 08:58:58

标签: javascript reactjs ecmascript-6

我可以使用下面的代码成功地从事件处理程序传递参数。

但我想知道,我如何将event传递给函数handleDown

class Parent extends React.Component {
    handleDown(argumentOne) {
    }
  render () {
    return (
      <div>
        <Child 
            handleDown={this.handleDown.bind(this)}
        />
      </div>
    );
  }
}

class Child extends React.Component {
    constructor(props) {
    super(props);
    }
  render () {
    return (
      <div>
        <span
            onMouseDown={this.props.handleDown.bind(this, 'argumentOne')}
        >
        Click here
        </span>
      </div>
    );
  }
}

1 个答案:

答案 0 :(得分:3)

  

我如何将事件传递给函数handleDown?

不是,事件机制没有,但考虑到问题中的代码,handleDown将收到事件作为你事后的第一个参数。提供了。

所以这里:

<Child 
    handleDown={this.handleDown.bind(this)}
/>

这将是handleDown的第一个参数,在这里:

<span
    onMouseDown={this.props.handleDown.bind(this, 'argumentOne')}
>

这将是handleDown的第二个参数。

我可能会修改第一个bind调用以传递null或其他内容,以便您始终将其作为第二个参数。但除非React做了一些特别的事情,否则它总是 last 参数,所以你可以从中做到。