![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=1739205307-Qv6gVTPpVP2IenYl7ncY5zAxdFxL1VQK-0-32b9648fb12e67b4dd6e04c8c179047f)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1739205307-g0tPzkVMbz7m5SXTnObBxl2bWvd01Jdh-0-dbb53d4964ac5912720269ada1ed7016)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1739205307-JB7082zrlEMirQBjmC1uhCGEEmBBmh1M-0-1ae07a9da3d655c13807003e72b948a9)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1739205307-z9UHJbFZSvZgEzm6m77CkgWKtsRT6hOU-0-ccb530bfbdbbf549ef4c7f726d2ad569)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1739205307-90SQZppLltjKD1GbO6pZgZ02Tybxu0YP-0-f5c47a5375720002015fc9edb3b6a41d)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1739205307-GZu0w2RugsMAePmoWYIxDgbiMJ4SsrtJ-0-6a404cba048e15c0044c9fb0d0b68271)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1739205307-Wf8XYrYGkUKsNQDymuIXiT0BhBp722ZX-0-acc7efeb474ac4cf1df7ff2d0d55e324)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1739205307-DF1TrzTQEJZesGfDDDKh7NE4BHJwPovm-0-d41c6c218bb630c697dbda10f8f9b480)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1739205307-gXu2Zjb8RCKGWrrByikAQE3fMlL7dDH5-0-d836b4c140e8fe7e3049110ae65451ef)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1739205307-g9GBmFfz7sK8ZDTT35W7KMBkh1e7T4X6-0-b70c16bd75091b05756f979d29e85753)