![Taro多端开发权威指南:小程序、H5与App高效开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/719/38209719/b_38209719.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.4 事件处理
1.基本使用
Taro元素的事件处理和DOM元素的很相似。但是有一点语法上的不同,Taro的事件绑定属性均以on开头且为驼峰式命名,事件属性的值为函数。下面做一个简单对比。
HTML为元素绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_2.jpg?sign=1739286844-QmqunSAvadk03JJH8K7PY6wYdyYVnZfi-0-89bfebdcc80ec16991d1804d82f26a8f)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1739286844-giX5Odg3ByULpb3rCj0ZlNElEw4ZIal3-0-25426898a8779f306e469c7ea04ed313)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1739286844-WhHJHtAoxDB3YacI6RnkTAnNunsBZy1C-0-539c909bd6c915e34f16de5ad76dc94f)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1739286844-xRqBMaHokmgGZ69ZkCV3G3ngIXMhykoW-0-9fddc936e33bb373d79b2a6b2c8ef57d)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1739286844-cfBYb5tsWtl3wiDmk0lIDCOJApFDYZVT-0-5cdb1503fafe78bc603196fe6498ef6a)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1739286844-T9WASKjqqaJr9fkAJACJRWMGMn7lX9FX-0-7deecd376f88c4db4e3ba38bc4b76943)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1739286844-zZQSg9y2nBZ7UH8jcTWKAJ4m5YzRECZv-0-659d8c6c8d3141cd44ade813bdabbe46)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1739286844-CyPO4PIt3Vs7dgdq4l69GFZNHyelZ9Bk-0-f26dfcdf263397057687e4b8f342b8bd)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1739286844-njciGTKSDBK7DvwJiOGjFlVg7nVuFzHv-0-61641289d0f0d4331ad072e6afee2ffb)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1739286844-o6mQNACbfvPtTZhqWWvIvgKiFVzfSYO4-0-38cdc877e7eb2dde0086c1eacfb0e451)