在其他计算属性中使用Vuex getter

时间:2018-05-21 14:20:50

标签: javascript vue.js vuejs2 vuex

我在我的商店中创建了一些getter并使用mapGetters映射它们,如下所示,其中的数据是正确的,如Vue调试工具中所示。

现在,我正在使用此数据为分页创建一些计算属性,如下所示。但我不确定为什么错误表明getter返回未定义。

export default {
  data() {
    return {
      pageNumber: 1
    }
  },
  props: {
    size: {
      type: Number,
      required: false,
      default: 5
    }
  },
  methods: {
    nextPage() {
      this.pageNumber++
    },
    prevPage() {
      this.pageNumber--
    }
  },
  computed: {
    ...mapGetters([
      'getCurrentClientConfig',
      'getFullVendorList'
    ]),
    totalVendors() {
      return getFullVendorList.vendors.length;
    },
    pageCount() {
      let l = getFullVendorList.vendors.length;
      let s = this.size;
      return Math.floor(l / s);
    },
    paginatedData() {
      let start = (this.pageNumber - 1) * this.size;
      let end = start + this.size;
      return getFullVendorList.vendors.slice(start, end);
    }
  }
}

出于某种原因,我在控制台中收到undefined错误,如下所示:

vue.runtime.esm.js:588 [Vue warn]: Error in render: "ReferenceError: getFullVendorList is not defined"

found in

---> <Vendors> at client/ui/components/Vendors.vue
       <VkModal>
         <Root>
vue.runtime.esm.js:1736 ReferenceError: getFullVendorList is not defined
    at VueComponent.paginatedData (Vendors.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options:71)
    at Watcher.get (vue.runtime.esm.js:3137)
    at Watcher.evaluate (vue.runtime.esm.js:3244)
    at VueComponent.computedGetter [as paginatedData] (vue.runtime.esm.js:3500)
    at Object.get (vue.runtime.esm.js:1915)
    at Proxy.render (Vendors.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options:21)
    at VueComponent.Vue._render (vue.runtime.esm.js:4532)
    at VueComponent.updateComponent (vue.runtime.esm.js:2783)
    at Watcher.get (vue.runtime.esm.js:3137)
    at new Watcher (vue.runtime.esm.js:3126)

提前致谢!

1 个答案:

答案 0 :(得分:1)

您需要从实例参考

获取它

应该是这样的:

totalVendors() {
  return this.getFullVendorList.vendors.length;
},