本篇内容介绍了“Vue3的Watch和computed怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
computed 与 watch
computed
使用 getter 函数,并为从 getter 返回的值返回一个不变的响应式 ref 对象。
<template>
<div>
{{ count }}
</div>
</template>
<script>
import { ref, computed } from 'vue'
export default {
setup() {
const count = ref(1)
const plusOne = computed(() => count.value + 1)
console.log(plusOne.value) // 2
plusOne.value++ // error
return {
count,
plusOne
}
},
}
</script>
或者,它可以使用具有 get 和 set 函数的对象来创建可写的 ref 对象。
<template>
<div>
{{ count }}
</div>
</template>
<script>
import { ref, computed } from 'vue'
export default {
setup() {
const count = ref(1)
const plusOne = computed({
get: () => count.value + 1,
set: val => {
count.value = val - 1
},
})
return {
count,
plusOne,
}
},
}
</script>
watchEffect
在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它。
const count = ref(0)
watchEffect(() => console.log(count.value))
// -> logs 0
setTimeout(() => {
count.value++
// -> logs 1
}, 100)
## watch
watch API 与选项式 API this.$watch (以及相应的 watch 选项) 完全等效。watch 需要侦听特定的 data 源,并在单独的回调函数中副作用。默认情况下,它也是惰性的——即,回调是仅在侦听源发生更改时调用。
与 watchEffect 比较,watch 允许我们:
惰性地执行副作用;
更具体地说明应触发侦听器重新运行的状态;
访问侦听状态的先前值和当前值。
#侦听一个单一源
侦听器 data 源可以是返回值的 getter 函数,也可以是 ref:
// 侦听一个getter
const state = reactive({ count: 0 })
watch(
() => state.count,
(count, prevCount) => {
/* ... */
}
)
// 直接侦听一个ref
const count = ref(0)
watch(count, (count, prevCount) => {
/* ... */
})
“Vue3的Watch和computed怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。