2017-12-03 180 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: [] 
    } 
} 

` ,那就是所有。