watch与watchEffect到底要怎么选

42 阅读1分钟

前言

今天简单聊下两种监听怎么选择,两者的区别可以简单的看下这篇:juejin.cn/post/727627…

需要新旧值:就选择watch

对象的深度监听:

import { reactive, watch } from "vue";

const obj = reactive({

name: "xxx",

age: 11,

});

watch(

() => obj,

(neVal) => {

console.log(neVal, 444888888888);

},

{ deep: true }

);

setTimeout(() => {

obj.name = "22222";

}, 1000);
const name = ref("ddd");

watch(

() => name.value,

(a, b) => {

console.log(a, b);

}

);

  


setTimeout(() => {

name.value = "133333";

}, 1000);

不需要新旧值:就选择watchEffect

const obj = reactive({

name: "xxx",

age: 11,

});

  


watchEffect(() => {

if (obj.name) {

console.log(obj.name, 9000000);

}

});

  


watchEffect(() => {

if (obj) {

console.log(obj.name, 911000000);

}

});

watchEffect立即执行监听、自动进行深度监听