Vuex吸气剂未更新

我有以下吸气剂:

withEarmarks: state => {
    var count = 0;
    for (let l of state.laptops) {
        if (l.earmarks.length > 0) {
            count++;
        }
    }
  return count;
}

在组件中,此计算出的属性是从该吸气剂派生的:

    withEarmarks() { return this.$store.getters.withEarmarks; },

返回的值是正确的,直到我更改了laptops数组中的元素,然后getter才更新。

路易Stafan2020/03/11 17:21:58

在您的情况下state.laptops.earmarks是一个数组,您正在通过其array index对其进行操作state.laptops[index]Vue无法对状态数组上的突变做出反应(按索引)。该文档为此提供了两种解决方法:

// 1. use purpose built vue method:
Vue.set(state.laptops, index, laptop)

// 2. splice the value in at an index:
state.laptops.splice(index, 1, laptop)

尽管已记录了文档,但我认为该页面上的霓虹灯发光的巨大标志是“如果您不知道这会浪费数小时的生产力”将是不错的补充

您可以在此处阅读有关此“ caveat”的更多信息:https : //vuejs.org/v2/guide/list.html#Caveats