我有一个功能:

function clickButton(event, someArgument) {...}


我需要将其作为事件处理程序传递给我的React组件。我正在尝试做这样的事情:

onClick={clickButton.bind(this, event, someArgument)}


但是没有定义可预测的事件。

应该有一些简单的解决方案。

最佳答案

要将其他数据传递给React中的事件处理程序,可以使用箭头函数。这将是最常见的解决方案,但我还将为您提供仅使用绑定的解决方案。

onClick={event => clickButton(event, someArgument)}


使用箭头功能时,也不必绑定this值。

使用bind,您可以尝试其他方法,但是还必须稍微修改处理程序函数:

onClick={clickButton.bind(this, someArgument)}

function clickButton(someArgument, event) {

}


我个人认为箭头功能更易于阅读,但this JSPerf表明,至少在撰写本文时,绑定功能的性能更高。

我的机器上的结果如下:
Opera的绑定函数比箭头函数快30%。 Firefox显示两者之间没有差异。不过奇怪的是,Opera的得分确实更高。这可能意味着Blink当前比ESX壁虎在ES6方面进行了优化。

08-17 20:19