javascript - 在反应样板中绑定事件处理程序
问题描述
我知道有 4 种绑定事件处理程序的方法。第一个是通过在 DOM 元素中绑定render()
:
<button onClick = {this.clickHandler.bind(this)}>Event</button>
第二个是在 DOM 元素中使用箭头函数render()
:
<button onClick = {() => this.clickHandler()}>Event</button>
第三个是在类构造函数中绑定:
constructor(props) {
super(props)
this.state = {
message: "Click"
}
**this.clickHandler = this.clickHandler.bind(this);**
}
render() {
return (
<div>
<div>{this.state.message}</div>
**<button onClick = {this.clickHandler}>Event</button>**
</div>
)
}
第四种方法是将类属性更改为箭头函数:
clickHandler = () => {
this.setState({
message: 'Goodbye!'
})
}
那么哪种方式最好呢?
解决方案
据我所知:-
- 在第一种情况下,将在您的 React 应用程序的每个渲染上创建一个新的绑定。
clickHandler
- 在第二种情况下,将创建一个新的匿名箭头函数,它在 React 应用程序的每次渲染
clickHandler
时内部调用(执行时) 。 - 第 3 次和第 4 次都更好,因为它们会一次性创建
clickHandler
. 它们在渲染流程之外。
推荐阅读
- python - Sklearn 随机森林模型不从数据框中删除标题
- reactjs - 未定义/空/空时如何隐藏标签
- r - 当观察的 nr 不同时,按列连接 2 个数据帧
- javascript - 来自 axios.get 请求的参数在 express 后端未定义
- android - 如何通过脚本与安卓设备交互?
- r - 如何将循环绘图打印成单个 pdf /多个 pdf 文件
- r - 为 ggplot 添加标题
- python - 如何将两个不等式答案合并到同一行
- windows - 我如何知道调用了哪个 Windows API 版本?
- javascript - ReferenceError: __dirname 未定义