如何从模块 vuex 访问 getter

时间:2021-02-13 16:01:23

标签: vue.js vuex vuex-modules

我在 vuex 中创建了模块,但是如何访问计算中的 getter 呢? 这是产品模板

<template>
    <ul>
        <li v-for="item in productAll" :key="item._id">
            <p>hello word</p>
        </li>
    </ul>
</template>

<script>
export default {
    
    computed:{
        productAll(){
            return this.$store.getters.productAll
        }
    },
}
</script>

这是我的商店

const productModule = {
  state: () => ({
    product: [

    ]
  }),
  getters:{
    productAll(context){
      return [
        "123","456"
      ]
      // return state.product.data
    }
  },
}

export const store = new Vuex.Store({
  modules: {
    productModule
  },
}

我只在“store.getters.productAll”中返回数组 123 345,如果我将数组 123 345 放入计算它正在工作,将显示 hello word 2 次,但是为什么当我放入 store 模块时它不起作用?

1 个答案:

答案 0 :(得分:1)

与操作不同,getter 不接收 context 对象。他们收到 4 个参数:

(state, getters, rootState, rootGetters)
  • state:当前模块状态
  • getters:当前模块 getter
  • rootState:根模块状态(以及模块到模块的访问)
  • rootGetters:根模块 getter(以及模块到模块的访问)

因此以这种方式创建您的 getter:

getters: {
  productAll(state) {
    return state.product.data
  }
}