首页 文章

未定义的vuex 3状态变量

提问于
浏览
1

我正在尝试使用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

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

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

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

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

    “就是这样 .

相关问题