# 组件的公共属性和事件 每个组件都有属性和事件。有些属性和事件,是所有组件都支持的。 ::: info 调整 1. uni-app x 4.0+ ,组件事件类型的名称增加 Uni 前缀,避免与浏览器全局事件冲突 2. 非 Uni 开头的事件类型名称被标记为废弃,功能不受影响。 3. 如您使用uni-app x 4.0以下版本,仍需去掉 Uni 前缀 变更示例 ```html ``` ::: ## 组件公共属性 - id - ref - style - class - data- ## 组件公共事件 - @touchstart - @touchmove - @touchend - @touchcancel - @tap - @click //与tap等价 - @longpress - @transitionend 在多点触摸的屏幕上,touch事件返回数组,包含了每个touch点对应的x、y坐标。 ### tap/click 事件@tap #### App端 - HBuilderX4.0及以下版本手指按下后移动会取消tap/click事件的触发,即手指移动后抬起不会响应tap/click事件 - HBuilder4.0及以上版本App端调整手指按下后在组件区域内移动不会取消tap/click事件的触发,移动到组件区域外才会取消tap/click事件的触发 #### Web端 手指按下后移动会取消tap/click事件的触发,即手指移动后抬起不会响应tap/click事件 ### transition 事件 - @transitionend transition 效果结束时触发 #### 兼容性 安卓 3.93+ 版本开始支持 ```vue ``` ### 冒泡事件系统 DOM事件主要有三个阶段:捕获阶段、目标阶段和冒泡阶段。 以点击事件为例,当触发点击时, 1. 首先从根节点逐级向下分发,直到监听点击事件的节点为止(捕获阶段); 2. 然后事件到达当前节点并触发点击事件(目标阶段); 3. 接着继续向上逐级触发父节点的点击事件,直到根节点为止(冒泡阶段)。 注意,虽然有3个阶段,但第2个阶段(“目标阶段”:事件到达了元素)并没有单独处理:捕获和冒泡阶段的处理程序都会在该阶段触发。 我们一般使用默认的事件注册机制,将事件注册到冒泡阶段,相对来说,大多数处理情况都在冒泡阶段。 uvue 目前暂不支持事件的捕获阶段。 #### 阻止冒泡 在事件回调中,可以通过调用`event.stopPropagation`方法阻止事件冒泡。 ```ts handleClick (event : MouseEvent) { // 阻止继续冒泡. event.stopPropagation(); } ``` #### 阻止默认行为 在事件回调中,可以通过调用`event.preventDefault`方法阻止默认行为。`event.preventDefault`仅处理默认行为,事件冒泡不会被阻止。 ```vue ``` ### Bug & Tips 连续触发`click`或`tap`事件,可能会出现事件丢失的情况。 ## UniEvent ### UniEvent 方法 @event-methods ## UniCustomEvent ### UniCustomEvent 方法 @customevent-methods ## UniMouseEvent ### UniMouseEvent 方法 @mouseevent-methods ## UniTouchEvent UniTouchEvent 的 type 类型包括:touchstart、touchmove、touchend、touchcancel、longpress。 ### UniTouchEvent 方法 @touchevent-methods ## UniTouch ## 参见 - [相关 Bug](https://issues.dcloud.net.cn/?mid=component.common)