- 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=1738968015-JsqMkeUAlpHO6RwZzcrA2AjPpLatobHj-0-ce03efced7dc8b2d8bd7e26ee81f6e21)
Taro为组件绑定事件的写法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_56_3.jpg?sign=1738968015-DA8x57sORMLoOgLDCvresdq41scPt34u-0-c2ddb08d911c9bf788310bb817b460d8)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_1.jpg?sign=1738968015-isPpU9thj1sB2PCCVHZLubbC5mK9mrW1-0-7409e4e522dba07c16d736ec3fc1caec)
在Taro中,事件处理函数的参数中,同样可以获取事件对象,通过事件对象可以进行事件操作,如阻止事件冒泡,代码示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_2.jpg?sign=1738968015-a83xlpvMHX0OOB2SaZMqPqT4eckg26WT-0-85ce278fe3a93667b51368426e55a382)
2.为事件处理函数传参
假如在一个列表中,列表的每一项都有一个“删除”按钮,单击“删除”按钮删除对应的数据:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_57_3.jpg?sign=1738968015-vfLyPjeq2JOEdbiCSGhQfOQv5yBZ2Efu-0-8de62d9d3e6bad6a6248a504e58a8315)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_1.jpg?sign=1738968015-1MwExTqUCnm1tBK3XEzafEUOGWjhFQ1A-0-9f3fc6f383920342470e5fb606860db1)
本例使用函数的bind方法解决this指向问题,当然我们还可以使用箭头函数:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_2.jpg?sign=1738968015-Lb9TKnquaB1OKlVivefR7ToTrp560mbU-0-a0f8a462acef17c1bbf6f86a67f0a147)
或者使用函数柯里化思想:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_58_3.jpg?sign=1738968015-xXN7zDf4wprxBpsl2q3y38gmUKgxgpIW-0-c18d9df285a380d59ff3b02dcc72fdda)
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_1.jpg?sign=1738968015-LJS8a8hV5jlpyPZo2ajeu7V1AqBe3ayh-0-11a16e2477dcf7c8931f6cc3f00f8f32)
上例中,单击View组件会调用this.handleClick(current),该函数调用后会返回一个新的函数,在这个函数中可以访问current值,同时能保证this指向的是当前Title组件。
3.自定义事件
有时存在这样的需求,期望组件内部的状态变化或操作能够传达给上层,这种需求通常被称为父子组件之间的通信,父组件期望子组件某个事件触发时,父组件执行某些特定操作。需要注意的是,自定义事件的属性名一定要以on开头,并采用驼峰式命名法,示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_59_2.jpg?sign=1738968015-7vwGO853LELeYHw9Hi33iQAydMAs24Aj-0-a2f51160125e69463d4c9792aee884d6)