【发布时间】:2018-07-25 21:54:24
【问题描述】:
这是一个 vue/vuex 应用,我们有一个对象:myObject,它有一组子对象:myObject.kids。
.kids在vuex初始加载对象时没有加载。
现在我想创建一个适用于.kids 的组件。
针对这种情况的 vue/vuex 方法是什么?
我应该创建一个根级集来容纳孩子,还是有办法将它们(通过 ajax)加载到商店中已经存在的 myObject 中?
【问题讨论】:
这是一个 vue/vuex 应用,我们有一个对象:myObject,它有一组子对象:myObject.kids。
.kids在vuex初始加载对象时没有加载。
现在我想创建一个适用于.kids 的组件。
针对这种情况的 vue/vuex 方法是什么?
我应该创建一个根级集来容纳孩子,还是有办法将它们(通过 ajax)加载到商店中已经存在的 myObject 中?
【问题讨论】:
你可以做任何你想做的事,通过 ajax 加载它,如果它在组件加载时不存在,则创建该属性,等等。然而,最重要的部分是创建一个响应式属性。我会推荐以下内容:
this.$store.commit('SET_KIDS', payload)
这将转化为您的商店中接收有效负载的突变:
Vue.set(state.myObject, 'kids', payload)
这很重要,因为属性需要是响应式的,才能被观察到,并且商店才能记录对属性的更改。
【讨论】:
myObject.kids 以未定义的方式开始生命,那么Vue.set(state.myObject, 'kids', payload) 仍然会导致它变得被动吗?