返回
Vue3.0侦听方式详解,让你成为Vue3.0高手
前端
2024-01-16 11:50:43
前言
Vue3.0对侦听方式进行了重构,提供了更加灵活和强大的侦听功能。在本文中,我们将详细介绍Vue3.0中的各种侦听方式,包括watchEffect、watch、computed和ref,并提供示例代码,帮助您更好地理解和使用这些侦听方式。
watchEffect
watchEffect 是 Vue3.0 中新引入的侦听方式,它与 watch 相比具有以下特点:
- 立即执行,没有 immediate 选项。
- 不需要传递侦听的内容,自动感知代码依赖。
- 不需要传参,只需要传递一个回调函数。
const count = ref(0)
watchEffect(() => {
console.log(`count is ${count.value}`)
})
count.value++ // 输出:count is 1
watch
watch 是 Vue2.0 中的侦听方式,在 Vue3.0 中仍然可以使用。与 watchEffect 相比,watch 具有以下特点:
- 可以指定侦听的内容,支持字符串和函数两种形式。
- 可以指定侦听选项,包括 immediate 和 deep。
- 需要传递侦听的内容和侦听选项,以及一个回调函数。
const count = ref(0)
watch('count', (newValue, oldValue) => {
console.log(`count changed from ${oldValue} to ${newValue}`)
}, {
immediate: true,
deep: true
})
count.value++ // 输出:count changed from 0 to 1
computed
computed 是 Vue2.0 中的侦听方式,在 Vue3.0 中仍然可以使用。与 watch 相比,computed 具有以下特点:
- 返回一个值,而不是一个函数。
- 只有当依赖项发生变化时才重新计算。
- 可以使用缓存来提高性能。
const count = ref(0)
const doubledCount = computed(() => {
return count.value * 2
})
console.log(doubledCount.value) // 输出:0
count.value++ // 输出:2
ref
ref 是 Vue3.0 中的新特性,它允许您创建响应式变量。与 watch、computed 相比,ref 具有以下特点:
- 可以直接访问变量的值。
- 变量的值可以是任何类型。
- 可以使用 .value 属性访问变量的值。
const count = ref(0)
console.log(count.value) // 输出:0
count.value++ // 输出:1
总结
Vue3.0 中提供了多种侦听方式,包括 watchEffect、watch、computed 和 ref。每种侦听方式都有自己的特点和适用场景。您需要根据自己的需求选择合适的侦听方式。