Javascript Vuex-更新阵列内的整个对象

Javascript Vuex-更新阵列内的整个对象,javascript,vue.js,vuejs2,vuex,Javascript,Vue.js,Vuejs2,Vuex,在我的Vuex变体中,我想替换我状态中的数组元素,如下所示: UPDATE_MAILING(state, mailing) { let index = _.findIndex(state.mailings, {id: mailing.id}); state.mailings[index] = mailing } 但这不会更新绑定到此数组的模板。如何反应式更新数组元素?您应该在Vue实例中使用Vue.$set(或this.$set): UPDATE\u邮寄(状态,邮寄){ 让i

在我的Vuex变体中,我想替换我状态中的数组元素,如下所示:

UPDATE_MAILING(state, mailing) {
    let index = _.findIndex(state.mailings, {id: mailing.id});

    state.mailings[index] = mailing
}

但这不会更新绑定到此数组的模板。如何反应式更新数组元素?

您应该在Vue实例中使用
Vue.$set
(或
this.$set
):

UPDATE\u邮寄(状态,邮寄){
让index=state.mailings.findIndex(item=>item.id==mailing.id)
Vue.$set(state.mailings、index、mailing)
}
文档:

如中所述,您可以使用或以反应方式替换数组项:

mutations: {
  UPDATE_MAILING(state, mailing) {
    const index = state.mailings.findIndex(x => x.id === mailing.id)
    state.mailings.splice(index, 1, mailing)

    // OR:
    Vue.set(state.mailings, index, mailing)
  }
}
我更喜欢这里的
splice
,因为它不需要导入
Vue
,这也使得测试更容易


您可以在getter内部执行相同的操作,而不是在内部执行!据我所知,如果数组(内部状态)发生任何更改,它应该在模板html中自动更新。要实现这一点,无论您想要更改什么数组,请在计算函数中从状态获取该数组。(在计算中,每当其依赖项(此处为数组)更改时,它将自动更新模板html)此链接可能会有所帮助。你能告诉我我的评论有帮助吗??我是否正确理解了这个问题?使用此方法和
Vue.$set
之间有什么区别?这只是一种替代方法,如中所述。我更喜欢这里的
splice
,因为它不需要导入
Vue
,这也使得测试更容易。