【问题标题】:Get a value from an observer in a Vuex getter从 Vuex getter 中的观察者那里获取值
【发布时间】:2019-06-30 20:21:55
【问题描述】:

我有一个命名空间模块,它带有一个名为allItems() 的getter 方法,用于从规范化状态获取一组值。

...    
getters: {
    allItems(state, getters, { entities }) {
        return state.items.map(function (item){
            return {...entities.product[item]};
        });
    }
}

当我尝试获取其他元素时,它给了我“您不能从 undefined 元素调用某些属性”错误。

如果我输入console.log(entities),我可以看到元素数组,当我输入console.log(entities.products) 时,我得到了一个观察者{__ob__: Observer},里面有数据,但是当我输入console.log(entities.products[1]) 时,我得到了undefined。我该怎么做才能解决这个问题?

【问题讨论】:

  • Vuex 从你的所有状态属性构造 Observables,所以你需要在这里换个思路。尝试使用参数构建一个 getter,以便您可以return getters.productForId(item)
  • @GiacomoVoß 确定我有一个吸气剂可以单独访问一个产品,但是如果我想要一个产品数组,我不能使用return state.items.map(function (item){ return getters.getProductById(item); });,因为给了我一个未定义的数组
  • 您解决了这个问题吗?

标签: vue.js store vuex


【解决方案1】:

我解决了这个问题,像这样创建了一个名为 getEntityById 的方法获取器

getters: {
    getEntityById: (state) => (entity, id) => {
        return state[entity][id];
    }
}

并在地图函数上调用它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2020-09-21
    • 1970-01-01
    • 2020-04-02
    • 2022-01-16
    相关资源
    最近更新 更多