2017-12-03 283 views
1

我试图设置使用Vue的2.5.2和3.0.1 Vuex,我无法摆脱的唯一的应用程序是这样的警告:未定义vuex 3状态变量

[Vue warn]: Error in render: "TypeError: _vm.product is undefined"

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

vm.$store.dispatch('getProducts') 

在我的部分,我得到的产物,通过使用下一个计算的属性:

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

this.id由Vue的路由器发送(和被适当地定义)。吸气看起来是这样的:

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

},

出现此警告后,实际产品信息显示正常,所以我想这Vue公司试图加载和渲染信息Vuex实际检索之前它来自服务器。

关于如何使Vue等待Vuex以正确和有效的方式加载数据的任何想法?

回答

0

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

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

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

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

` ,那就是所有。