В своем проекте я создал небольшой модуль vuex, используя vuex-module-decorators
. Но при попытке доступа к нему напрямую из 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