我在 vue 3 中創建了一個用于過濾的動態模型,并且在清除時遇到了一些問題(清空物件)
setup() {
const model = ref({});
watch(model.value, (value) => {
console.log("model changed");
console.log(model.value);
});
const addLanguage = (language) => {
model.value["meta_" language.toLowerCase()] = language;
};
const clear = () => {
model.value = {};
};
return {
addLanguage,
clear,
};
},
我還在這里創建了一個示例用于測驗https://codesandbox.io/s/mystifying-chebyshev-9tjogk?file=/src/App.vue
向模型添加新元素...觀察者被觸發....但是當您清除物件(空)時,不再觸發觀察功能。
知道為什么嗎?
uj5u.com熱心網友回復:
監視源(即model.value)被替換clear()為空物件,因此不再觸發監視程式。
解決方案
與其解開
modelref,不如將其ref本身作為監視源傳遞。將
deep標志傳遞給手表,以便觀察屬性添加/洗掉。
watch(
model, 1??
(value) => { /* handle change */ },
{ deep: true } 2??
)
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446448.html
