![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=1739672175-lSy0F6u1bZQtRcteP6JfVc4EQnIwr5jY-0-4873d45305022efc82dd111d9a4cbc6e)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1739672175-Nkn2DSDFavXdeymX5yz1vO1quq0HadUC-0-cdd752e9d19641ebb02f16b964338cd1)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1739672175-arGsRPKqwSIpfCRmdU1nbwKBmho4rsBE-0-852a60a15ce13fb403e91757980e1335)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1739672175-qsCyrjHWof7yIFQE6K2mv9g3bCSNGYfS-0-fb782ac14689df3bea437915ae470943)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1739672175-ffxHtPdEMyYgW3nEIaykqyu9TynMJ8Kt-0-6bb18756a54deaf18f794b4d8b09afb8)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1739672175-ZWZHM6eOc1VqSxfoLKGAAO7ieuW96ut4-0-c6c27e30d0e52ad4c0ba6dbe4b2962ab)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1739672175-IodeDpGVJFN3qWgkP4fAySaBtANmcwuD-0-5c138d67aa504e2bb6a3b21a2e325134)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1739672175-gHSSNA5fcUbLHCnUfQ3O1j6KRiVybNen-0-08305b278b42d8058379d61d8c95792d)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1739672175-elB9l8WLpuxonicUl7dzX9GEfkqLWeBC-0-32420007364788270a9d5e765e560269)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1739672175-ToE44V97LTk4iaJrK7481zAIObapwNMP-0-2b43e7dec5d28d000a847ea0c32e6d77)