# 组件的公共属性和事件
每个组件都有属性和事件。有些属性和事件,是所有组件都支持的。
::: 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)