vue3工作应用-watch写法
场景
女朋友在实现一个组件之间传参的功能,希望实现父组件传入参数,子组件能够根据参数实时变化。
按照我vue2的里面,告知:
- props+watch监听props传入的属性。
- v-model+watch实现
- v-model+computed实现
核心就是监听变化的参数,根据其值进行逻辑。
然后表示无爱,watch一直不起效,发来代码:
<script setup>
const num = props.num
watch(num, n => {
console.log(n)
})
</script>
好家伙,直接把响应性弄没了。
解决
官网watch讲解:cn.vuejs.org/api/reactiv…
vue3中,如果监听getter函数:
const obj = reactive({num: 0});
watch(() => obj.num, (v, oldV) => {})
如果监听ref:
const num = ref(0);
watch(num, (v, oldV) => {})
如果需要深度监听或者立即执行(放到了第三个参数中):
watch(num, (v, oldV) => {}, {
deep: true,
immediate: true
})
如果监听响应式对象,自动深层:
const obj = reactive({num: 0});
watch(obj, (v, oldV) => {})
如果监听多个:
watch([num1, num2], ([v1, oldV1], [v2, oldV2]) => {})