首页 > 解决方案 > Vuex 反应式 mapGetter 与传递的参数

问题描述

我有很多将参数传递给商店的 getter,例如:

this.$store.getters['getSomeThing'](this.id)

而且我没有找到关于如何以最佳方式使用mapGetters来保持反应性的建议,同时传递论点。我发现的一个建议是映射getter,然后在mounted中传递参数:

computed: {  
  ...mapGetters([
    'getSomeThing'
  ])
},
mounted () {
  this.getSomeThing(this.id)
}

这似乎真的不是最理想的,因为它只会检查挂载状态的变化。关于如何在将参数传递给 getter 时最好地保持反应性的任何建议?这是与上述代码匹配的 getter 示例:

getSomeThing: (state) => (id) => {
  return state.things.find(t => { return t.id === id })
}

标签: vue.jsvuejs2statevuexflux

解决方案


这是我拥有的项目的一个片段:

    computed: {
        ...mapGetters('crm', ['accountWithId']),
        account() {
            return this.accountWithId(this.$route.params.id)
        }
    },

这使得this.account反应性和依赖于参数。

所以...

computed: {  
  ...mapGetters([
    'getSomeThing'
  ]),
  thing() {
    return this.getSomeThing(this.id)
  }
},

推荐阅读