这两种绑定事件有什么区别?
第一种方式绑定事件:
<el-switch :before-change="() => beforeChangeHandler(scope.row)"/>
第二种方式绑定事件:
<el-switch :before-change="beforeChangeHandler(scope.row)" />
很多同学以为这2种方式绑定事件的方式是相同的,没有什么区别。其实是有区别的。
区别
1,触发的时机不同:
第一种:用户点击开关时才会被 beforeChangeHandler 事件
第二种:组件渲染阶段就会执行 beforeChangeHandler 事件
2,传递的内容不同:
第一种:传递的是一个函数引用
第二种:传递的是函数返回值
如何判断传递的是函数引用还是返回值?
最简单的判断方法:
如果是使用的箭头函数绑定,是函数引用
如果直接绑定,有括号,返回值。无括号,函数引用。
还有一种方法来判断:看控制台,立即执行的是函数返回值。否则就是函数引用。
| 写法 | 传递的是 | 说明 |
|---|---|---|
| :prop="handler" | ⭐ 函数引用 | 没有括号,直接传函数 |
| :prop="handler()" | 📦 返回值 | 有括号,立即执行并传结果 |
| :prop="() => handler()" | ⭐ 函数引用 | 箭头函数包裹,延迟执行 |
| :prop="() => handler" | ⭐ 函数引用 | 箭头函数返回函数 |


