Javascript Vuex-更新阵列内的整个对象
在我的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
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
,这也使得测试更容易。