如何同时将mapGetters与模块和root的getter一起使用?

San*_*ặng 4 vue.js vuex

我知道如何在单个情况下使用mapGetters,但不能同时使用。

例如,我有firstRootGetterinside store/index.js,所以我将调用...mapGetters(['firstRootGetter'])vue组件。

如果我有firstModuleGettersecondModuleGetter里面store/modules/post.js,我会打电话...mapGetters('post', ['firstModuleGetter', 'secondModuleGetter'])

我的问题是,我怎么称呼它们为single ...mapGetters。可能吗?

现在,我必须写两行来分别调用它们。

小智 16

是的,这是可能的,但是您必须mapGetters在每行中将名称空间提供给助手:

...mapGetters({
  exampleGetter: 'myModule1/exampleGetter',
  anotherGetter: 'myModule2/anotherGetter',
})
Run Code Online (Sandbox Code Playgroud)

如果您试图将它们组合成一个单一的吸气剂,请使用action读取两个模块存储并返回组合对象的根。然后mapActions就像你会的那样mapGetters

  • 再次看到我的答案,我已经编辑了获取方法的传递方式。使用对象“ {}”代替数组“ []”,并为获取方法提供别名。这样做可以使用this.exampleGetter和this.anotherGetter。 (2认同)

jam*_*ace 6

computed: {
        ...mapGetters('module1', ['getQuestions', 'getAnswers']),
        ...mapGetters('module2', ['getGrades'])
    },
Run Code Online (Sandbox Code Playgroud)

这是使用的语法:

 ...mapGetters('some/nested/module', [
    'someGetter', // -> this.someGetter
    'someOtherGetter', // -> this.someOtherGetter
  ])
Run Code Online (Sandbox Code Playgroud)