【发布时间】:2021-11-11 13:09:28
【问题描述】:
我想确保数组中的所有对象都是Item 类型。如果我这样做,splice 以后将不再工作。
我就是这样做的:
computedItems: {
get()
{
//return this.modelValue;
return this.modelValue?.map((item) => new Item(item));
},
set(newValue)
{
this.$emit("update:modelValue", newValue);
}
}
这很好用,但它似乎破坏了反应性,因为:
removeItem(item) {
let key = this.computedItems.findIndex((i) => {
return item === i;
});
this.computedItems.splice(key, 1);
}
不起作用(没有错误,只是没有更新列表)。
如果我这样做
computedItems: {
get()
{
return this.modelValue;
},
set(newValue)
{
this.$emit("update:modelValue", newValue);
}
}
拼接确实按预期工作(但项目未映射到特定对象)。
我的问题:
- 我该如何解决?
- 为什么会这样?在计算的 setter 中映射是不是一个坏主意?
【问题讨论】:
标签: javascript vue.js vuejs3