# 组件的公共属性和事件
每个组件都有属性和事件。有些属性和事件,是所有组件都支持的。
## 组件公共属性
- id
- ref
- style
- class
- data-
## 组件公共事件
- @touchstart
- @touchmove
- @touchend
- @touchcancel
- @tap
- @click //与tap等价
- @longpress
- @transitionend
在多点触摸的屏幕上,touch事件返回数组,包含了每个touch点对应的x、y坐标。
### 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`事件,可能会出现事件丢失的情况。
## Event
### Event 方法 @event-methods
## CustomEvent
### CustomEvent 方法 @customevent-methods
## CustomEventOptions
## MouseEvent
### MouseEvent 方法 @mouseevent-methods
## TouchEvent
### TouchEvent 方法 @touchevent-methods
## Touch
## 参见
- [相关 Bug](https://issues.dcloud.net.cn/?mid=component.common)