javascript - onClick={tmp} 和 onClick={()=>tmp} 有什么区别
问题描述
onClick={tmp}
我不知道和之间有什么区别onClick={()=>tmp}
。我看过一些 YouTube 视频,其中当tmp
函数有参数时,它表示为onClick={()=>tmp(parameter)}
. 此外,当它没有参数时,它表示为onClick={tmp}
。我不知道他们之间有什么区别。
解决方案
onClick
参数接受函数回调。假设这tmp
是函数的名称,不同的实现工作如下:
onClick={tmp}
刚刚传递了单击元素时执行的函数引用onClick={()=>tmp}
创建一个新的匿名函数,该函数返回对 tmp 的引用,这可能不是您想要的,而是您想使用回调调用该函数,如下所示onClick={()=>tmp()}
:这等效于创建另一个函数function tmp2(){tmp()}
,然后将其传递给 onClick,就像您在第一个示例中所做的那样onClick={()=>tmp(parameter)}
就像在上一个示例中一样,您正在使用参数调用函数,因为 onClick 不会将您想要的参数传递给您创建另一个无参数函数的函数onClick={tmp(parameter)}
不是函数引用,您在这里所做的是将 tmp 函数的结果传递给 onClick 参数,这很可能是不可取的。假设该函数在触发时更新 DOM,在这种情况下,不是在每次单击时更新 DOM,而是在渲染过程中最初更新它,然后使按钮不再工作。- 在某些条件下,
onClick={tmp(parameter)}
假设 tmp 是高阶函数,例如 tmp 函数的返回值是不同的函数,function tmp(paramter){return console.log}
则可能会起作用:这相当于做onClick={console.log}
推荐阅读
- regex - 正则表达式从 node_modules 中排除文件夹
- php - 刷新缓存后opencart 3.0仪表板错误500
- vue.js - How can I access data in asyncData with Nuxt
- angular - 如果满足某些条件,RXJS 停止 Observable 链的传播
- c++ - 如何在 C++ 中为曲面制作邻接矩阵
- jquery - Trigger jQuery script to run if browser window is resized
- ruby - Reset a counter in Ruby
- amazon-web-services - AWS Lambda is seemingly not highly available when invoked from SNS
- javascript - Local search v-data-table Vuetify
- javascript - Javascript password form with multiple conditions