computed vs watch
computed (计算缓存)
- 响应式依赖(当依赖变化的时候才会触发更新)
- 不支持异步更新
firstName:
lastName:
getName:
html
<script setup>
import {ref,computed } from 'vue'
const firstName = ref('小')
const lastName = ref('明')
const getName = computed({
get(){
return `${firstName.value} ${lastName.value}`
},
set(val){
const _getname=val.split(' ')
firstName.value=_getname[0]
lastName.value=_getname[1]
}
})
</script>
<template>
<div>
<input v-model="firstName"/>
<input v-model="lastName"/>
<input v-model="getName"/>
{{ getName }}
</div>
</template>
watch(监听)
- 当被监听的变化的时候立即发生变化
- 支持异步跟新
counter:0
html
<script setup>
const counter = ref(0)
const setCount = async () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(counter.value += 1)
}, 2000)
})
}
const flag = watch(counter, async (value) => {
if (value === 4) {
// 停止监听 但是不会跳出该函数
flag()
// 跳出该函数
return
}
await setCount()
},{
immediate: true,
})
</script>