通过ReactJ中没有箭头功能的事件处理程序,将事件ARG和事件对象与事件处理程序



所以,我一直在寻找正确的方法,以将参数对象和事件对象传递给React中的事件处理程序。有最好的做法吗?

我发现的唯一方法是使用箭头函数并通过事件对象和参数传递。

<Button onClick={(e) => this.updateProgress(e, 1)} >Increase</Button>

由于某些情况下可能需要多个回调绑定而被官方文件劝阻。

https://facebook.github.io/react/docs/handling-events.html

有没有一种方法可以传递事件对象和事件,而无需使用箭头函数即可传递事件处理程序的对象?

我从未积极灰心。您所指的文档的一部分是当您不是通过额外参数时。

当您通过参数时,您提出的方式正是这样做的方法。

edit 例外是如果参数是某种程度的常数(我想不出何时会有案例,只是标记)。

此模式(您提出的一种模式)对于循环中的处理程序特别重要,每个项目都需要调用回调/处理程序,但要在ID或键或索引上向前转。

替代方法是使用.bind,但不建议使用,因为在每个render()呼叫上创建了一个新功能。

updateProgress(arg, event) {
  console.log(arg, event); // Prints: 1 Proxy {dispatchConfig: Object ...
}
render() {
  return
    ...
    <Button onClick={this.updateProgress.bind(this, 1)}>Increase</Button>
}

最新更新