- Taro多端开发权威指南:小程序、H5与App高效开发实战
- 李佩忠编著
- 452字
- 2021-05-19 18:01:18
2.4 事件处理
1.基本使用
Taro元素的事件处理和DOM元素的很相似。但是有一点语法上的不同,Taro的事件绑定属性均以on开头且为驼峰式命名,事件属性的值为函数。下面做一个简单对比。
HTML为元素绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_2.jpg?sign=1739535277-1he1MVvOzxLZKC3FVEFRp9VAe6vDuZda-0-a37bda3a6f75a5a1dd5acdadff916ad2)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1739535277-BCM7Cd2R5JIWuwYaxqhCKicM0n8Z4quV-0-a2c6564ac161e47c7f6b63d936db2bb2)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1739535277-JXY64UmHHhdheULHTKIIpbwySrSy5UA5-0-f25563ad297a33ff52ba19d78e28335d)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1739535277-UgUO0GafV1ipt5JMgGYRLgt6ihWps6Xg-0-4f61f6a5c7f0f16f42b8712cfea974a3)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1739535277-PY1lPg0oNQlbLbaIT9rtsLfn4QEvrAEh-0-07cd318b74fd7cd7baf33b7e28093f20)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1739535277-sug3DmzginLKlYcq2NztcF1dTHOZXSwf-0-93c527ac6ae02abae6c1f46a548f4238)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1739535277-YJNL2FGWdKtxpx8uzYaQbsDSTeI6OKOu-0-604dd3dbfddca2abd17354a132b84ee3)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1739535277-s3FvCUb17UKMeQvEr1AjzAhauGqjLoy7-0-88476a1f369d3296f8538722c9a5fc7b)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1739535277-hGu1PghUarXwyh0TPXE9kBbS74R1t35M-0-af1747f48eff096d8e6ac66fd3e64e61)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1739535277-YGUqtH5tPFGZ97YP04atgULExLA87qYT-0-26d3668291ac4a330a9747080de99893)