- 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=1739646530-aNFbTmzEw7YmRIWzTOISLKAvUvdroblp-0-e6556a3d58628db8e735b5bca5f02c9a)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1739646530-ZDtqwLWsGxkDjYIgIOiPzrYx7ydXENGy-0-0db1edf08442090ab579b4c8cf1067c1)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1739646530-RGuDy3ad6vvrP91wviFm9H5OkTkc8YXJ-0-b80603ea825bb28c3417c0fdde79b5d5)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1739646530-LA25oaO14yKa34MtSGmSPkqOroUNvZji-0-30bf3058d46365a41db543afd5389676)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1739646530-GL8RHdsCQK8aOmDgbZGHPHG26Wn5hiwp-0-629d955e2c3c1bd16d859ffd2e4e98b1)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1739646530-1WiIkNJckciWRP4e4sh5EIhwr3YYHRUM-0-7ea83eaa8f1184a3d9ff0513f8fbd612)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1739646530-5auI0pFM3B9F9gxbH8P4VALwAACzzjet-0-b2a8f4c9b3e729a34804883b53a1363e)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1739646530-YxoRuj442NXqXjj5MSBQv0I5jfZpjY6p-0-7afe6ffa20549b2bff55d6ef10205043)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1739646530-XHIqly67oce9R5ugmTDFwHJUxMmlvj0S-0-96c346599a0030e26bd6743180077702)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1739646530-iLaQHFUakpzRI93Mf8sNEhiLnCpKP1Qk-0-48108e28bb74156961a635664fe7424f)