typescript - Vuex模块装饰器: Access vuex module from this. $store没有注册模块

标签 typescript vue.js vuex store vuex-modules

在我的项目中,我使用 vuex-module-decorators 创建了一个小型 vuex 模块。但是当尝试直接从模板部分的 this.$store$store 访问它时,它不会触发注册。

这是一个例子:

// exampleModule.ts
import { Module, getModule, Mutation, VuexModule } from 'vuex-module-decorators';
import store from '@/store';

@Module({
  dynamic: true,
  namespaced: true,
  name: 'example',
  stateFactory: true,
  store,
})
class Example extends VuexModule {
  private work: boolean = false;

  get isWorking() {
    return this.work;
  }

  @Mutation
  setWorking(status: boolean) {
    this.work = status;
  }
}

export default getModule(Example);

// App.vue
<template>

  <div> 
    first attempt: {{ $store.getters['example/isWorking'] }} // this is not working
    second attempt: {{ isWorking }} // this is not working too
  </div> 
</template>

<script lang="ts">
  import Vue from 'vue';

  export default Vue.extend({
    computed: {
      isWorking() {
        return this.$store.getters['example/isWorking'];
      }
    }
  });
</script>

我实际注册模块并使其工作的唯一方法是将其直接导入到组件中,如下所示:


<script lang="ts">
  import Vue from 'vue';
  import exampleModule from '@/store/modules/example/exampleModule';

  export default Vue.extend({
    computed: {
      isWorking() {
        return exampleModule.isWorking;
      }
    }
  });
</script>

我在这里遗漏了什么吗?这是想要的行为吗?谢谢。

顺便说一句,我在他们的 github 存储库上打开了一个问题,但我仍然没有任何答案,所以我在这里

https://github.com/championswimmer/vuex-module-decorators/issues/190

最佳答案

我无法发表评论,所以我会在这里回答。 您是否将商店导入到 main.js 文件中? 也许这就是问题所在。 祝你好运!

关于typescript - Vuex模块装饰器: Access vuex module from this. $store没有注册模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59967515/

相关文章:

css - 有没有办法从 vuetify 元素中删除 css,然后添加你自己的

javascript - 视觉 : How to use Per-Route Guard with Vuex getter?

javascript - 在 Vuex 模块中进行继承的方法

javascript - Node JS 同步读取一行文本

typescript - 使用 Vue 3 + vue-class-component + TypeScript 的 Vuelidate

javascript - 迭代绑定(bind)到键的数组(动态)

javascript - 在 Vuejs 中将多个组件的数据收集到一个组件中的最佳方法

vue.js - 如何将自定义图像添加到 map 框标记?

javascript - Vuex 存储更改未更新组件

javascript - 为什么在 visual studio 中使用 typescript 时需要在 default.htm 中包含多个 .js 文件?