未定义的vuex 3状态变量

时间:2017-12-03 07:01:31

标签: templates vue.js rendering vuex

我试图使用Vue 2.5.2和Vuex 3.0.1设置应用程序,我唯一不能解决的是这个警告:

  

[Vue警告]:渲染错误:" TypeError:_vm.product未定义"

product 只是产品的元素,是一个存储在Vuex状态的数组,在创建Vue实例之后执行下一行之后填充:

vm.$store.dispatch('getProducts')

在我的组件中,我使用下一个计算属性获取产品

product: function () {
    return this.$store.getters.getProductById(this.id)
  },

this.id 由Vue Router发送(并且已正确定义)。 getter看起来像这样:

getProductById: (state) => (id) => {
return state.products.find(product => product.id === id)

},

出现此警告后,实际显示产品信息,因此我猜Vue会在Vuex实际从服务器检索信息之前尝试加载和呈现信息。

有关如何让Vue等待Vuex以适当有效的方式加载数据的任何想法?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。作为specified in the Vue 2 API,Vue只能保证一个对象在被正确初始化后才会被动。

在我的Vuex状态下,我确实初始化了我试图通过this.$store.getters.getProductById(this.id)访问的产品对象。空结构看起来像这样: product: {}

但是我错过了一个应该放在产品嵌套对象中的数组。所以最后我通过初始化结构解决了这个问题,如下所示: `

product: {
  color_group: {
    colors: []
  }
}

` 这就是全部。