gpt4 book ai didi

vue.js - Vue 更改数组中的对象并触发 react 性

转载 作者:搜寻专家 更新时间:2023-10-30 22:08:45 25 4
gpt4 key购买 nike

当更改数组中索引找到的对象的一部分时,如何触发更新?

文档展示了如何改变数组的值:

Vue.set(example1.items, indexOfItem, newValue)

example1.items.splice(indexOfItem, 1, newValue)

但是如何在不改变对象其余部分的情况下改变数组中对象的属性值呢?

以下内容用于更新属性,但 Vue 不会对更改使用react,直到其他内容触发更新。

example1.items[indexOfItem].some_object_property = false

最佳答案

您可以使用 this.$set() 更新数组元素中的子属性.例如,要在前两个数组元素中递增 x 子属性(如果不存在则创建子属性):

methods: {
update() {
this.$set(this.arr[0].foo, 'x', (this.arr[0].foo.x || 0) + 100)
this.$set(this.arr[1].foo, 'x', (this.arr[1].foo.x || 0) + 100)
}
}

new Vue({
el: '#app',
data() {
return {
arr: [
{
foo: {
x: 100,
y: 200
}
},
{
foo: {
/* x does not exist here initially */
y: 400
}
}
]
};
},

methods: {
update() {
this.$set(this.arr[0].foo, 'x', (this.arr[0].foo.x || 0) + 100)
this.$set(this.arr[1].foo, 'x', (this.arr[1].foo.x || 0) + 100)
}
}
})
<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>

<div id="app">
<button @click="update">Update</button>
<p>arr[0]: {{ arr[0] }}</p>
<p>arr[1]: {{ arr[1] }}</p>
</div>

codepen

关于vue.js - Vue 更改数组中的对象并触发 react 性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46985067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com