react项目,如何编写按钮事件的绑定代码?
发布于 作者:苏南大叔 来源:程序如此灵动~

写了这么多.call()
、.apply()
和.bind()()
的文章了,现在就来看一下react
里面如何编写按钮事件的绑定代码。思路也非常简单,就是利用.bind()
来实现事件的绑定。本文代码非常简单,react
高手请飘过。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文分为函数式组件和类式组件两个,来描述react
中按钮事件的绑定。测试环境:create-react-app@5.0.1
,react@18.2.0
,react-dom@18.2.0
,node@16.14.2
。
.bind()()
稍稍回顾一下前文,分别是:
- https://newsn.net/say/js-call.html
- https://newsn.net/say/js-apply.html
- https://newsn.net/say/js-bind.html
本文需要引用一下上述文章的结论:
.bind()
返回的是个函数。.bind()
的第一个参数可以覆盖this
引用,其余参数依次放在后面的两个括号的任何一个括号里面。
测试代码,类组件
类组件里面设置state
的参考文章:
这里共使用了5种写法,分别是:
写法 | this | 推荐 |
---|---|---|
this.setData.bind(this) | 改写 | 推荐 |
this.setData.bind(this,args) | 改写 | 推荐 |
this.setData2.bind() | 没改写 | 不推荐 |
this.setData2() | 不涉及 | 错误的写法,不推荐 |
this.setData2 | 不涉及 | 逻辑中不涉及this. 的话,可以执行,但是不推荐 |
this.setData3.bind(null,"a") | 占位而已 | 逻辑中不涉及this. 的话,可以用null占位 |

测试代码,函数组件
函数式组件里面使用state
的文章:
写法 | this | 推荐 |
---|---|---|
setData | 不涉及 | 推荐,但是没办法传参数 |
setData2.bind(null,"a") | 是不是改写没意义 | 想传参数的话,就需要传递一个没有意义的null改写 |

表格总结
不管是类式组件还是函数式组件,都要明确的是需要{函数}
,而不是需要{函数()}
。
代码写法 | 组件类型 | 说明 |
---|---|---|
函数名 | 函数式组件 | |
函数名() | 函数式组件 | 函数被执行了, 除非返回的是个函数 |
函数名.bind() | 函数式组件 | 这个函数体里面,不能需要参数 |
函数名.bind(null,args) | 函数式组件 | 可以传递参数 |
this.函数名 | 类式组件 | |
this.函数名() | 类式组件 | 函数被执行了, 除非返回的是个函数 |
this.函数名.bind() | 类式组件 | 不能写this. ,不能需要参数 |
this.函数名.bind(this) | 类式组件 | 可以写this. ,不可以传递参数 |
this.函数名.bind(this,args) | 类式组件 | 可以写this. ,可以传递参数 |
题外话
如果是普通的html
按钮的话,很可能执行的代码是:
html
里面的写法和react
里面的写法区别是很大的....,特别是onclick
的写法,都是小写字母。react
里面的写法是onClick
。
相关文章
- https://newsn.net/say/js-call.html
- https://newsn.net/say/js-apply.html
- https://newsn.net/say/js-bind.html
- https://newsn.net/say/react-state.html
- https://newsn.net/say/react-usestate.html
结束语
更多react
相关经验文章,请点击苏南大叔的系列文章链接:


