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

这些文档展示了如何更改数组的值:

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

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

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

The following w或ks to update the property, but Vue doesn't react to the change until something else triggers an update.

example1.items[indexOfItem].some_object_property = false

推荐答案

只要调用set()一次来设置数组中的对象(使用要更新的属性),Vue就会对对象属性的更改做出react .下面是一个示例,其中一个对象数组在应用程序的数据中初始化,另一个对象数组在安装时手动设置(使用Vue.set()).单击该按钮会更新每个数组中一个对象的属性,Vue会做出react .注意,在mount()中发生的set()调用实际上随时都可能发生.

https://codepen.io/jordan-kalosal/pen/VrwjoR

new Vue({
  el: "#app",
  data: {
    arr: [
      {
        property: 'OBJ1 Prop'
      },
      {
        property: 'OBJ2 Prop'
      }
    ],
    setLater: false
  },
  mounted() {
    this.$set(this, 'setLater', [
      {
        property: 'setLater OBJ1 Prop'
      },
      {
        property: 'setLater OBJ2 Prop'
      }
    ])
  },
  methods: {
    _updateObjProps() {
      this.arr[0].property = (new Date()).toString();
      this.setLater[0].property = (new Date()).toString();
    }
  }
})

Vue.js相关问答推荐

Nuxt3-Vue中的useRoute和useRouter有什么区别

Vue-tables-2(vuex)react性不起作用

VueJS - 将单独的组件加载到 vue 实例中

将 Vue 应用程序挂载到主 Vue 应用程序的容器中

在 VueJS 中存储图像的正确位置是什么 - 公共文件夹或assets文件夹?

使用 Vue 和 JS 下载 CSV 文件

如何修复跨域读取阻塞 (CORB) 阻止了 MIME 类型应用程序/json 的跨域响应问题?

如何在 vuejs 中异步加载图像 src url?

这是 v-on:change 的正确用法吗?

VueJS错误编译模板

如何从 vue.js 捕获 Jquery 事件

有没有办法知道组件实例何时挂载?

'不提供名为'createRouter'的导出'' vue 3、vite 和 vue-router

'vue' 未被识别为内部或外部命令

Leaflet+Vue+Vuetify / Leaflet map 隐藏 vuetify 弹出对话框

如何从组件内的单点捕获 vuejs 错误

将登录页面包含在单页应用程序中是否不安全?

vue-router如何持久化导航栏?

VueJS 2 在多个组件上debounce

用于 nuxt.js 构建的自定义 index.html