组合式watch和watchEffect的区别
时间: 2023-10-13 11:25:30 浏览: 70
script setup 响应式:核心
`watch` 和 `watchEffect` 都是 Vue3 中用于响应式数据的监听的 API。
其中,`watch` 的使用方式为:
```javascript
watch(
() => state.count,
(newValue, oldValue) => {
// ...
}
)
```
而 `watchEffect` 的使用方式为:
```javascript
watchEffect(() => {
// ...
})
```
它们的区别在于:
1. `watch` 的第一个参数是一个 getter 函数,返回需要监听的数据;而 `watchEffect` 直接接收一个函数作为参数,函数内部使用到的响应式数据变化时,就会执行这个函数。
2. `watch` 监听的是具体的某个响应式数据的变化,需要手动指定需要监听的数据;而 `watchEffect` 监听的是所有使用到的响应式数据的变化,不需要手动指定需要监听的数据。
3. `watch` 的回调函数第一个参数是新值,第二个参数是旧值;而 `watchEffect` 函数内部可以直接使用响应式数据。
因此,如果需要监听的数据比较固定,可以使用 `watch`;如果需要监听的数据比较动态,或者需要监听的数据比较多,可以使用 `watchEffect`。
阅读全文