Me gustaría asegurarme de que todos los objetos en una matriz sean del tipo Item . Si lo hago, un splice ya no funciona más adelante.
Así es como hago esto:
computedItems: { get() { //return this.modelValue; return this.modelValue?.map((item) => new Item(item)); }, set(newValue) { this.$emit("update:modelValue", newValue); } }Esto funciona bien, pero parece romper la reactividad, como:
removeItem(item) { let key = this.computedItems.findIndex((i) => { return item === i; }); this.computedItems.splice(key, 1); }no funciona (no hay error, la lista simplemente no se actualiza).
Si lo hago
computedItems: { get() { return this.modelValue; }, set(newValue) { this.$emit("update:modelValue", newValue); } }el empalme funciona como se esperaba (pero los elementos no están asignados al objeto específico).
No estoy seguro de por qué sucede y no puedo explicarlo muy bien.
Array y Object se guardan en las memorias. Así que es un puntero a los recuerdos. El puntero no estaba cambiando y nada es reactivo. (Dolor de cabeza)
Puedes probar este código:
removeItem(item) { const newArray = [...this.computedItems]; let key = newArray.findIndex(i => item === i); newArray.splice(key, 1); this.computedItems = newArray; }