首页 > 解决方案 > 为什么我在 App.vue 类的商店中的 getter 未定义

问题描述

我正在使用 vue、vuex 和 vuex-typescript 构建一个电子应用程序。因此,我使用 vuex-typescript 为我的商店提供了以下代码:

export const dispaVuex = {
  namespaced: true,

  state: {
    dispatch: new Dispatcher(appState),
  },

  getters: {
    getFTime(state: DispatchState): boolean {
      return state.dispatch.fistTime;
    },
  },
};

const {read} = getStoreAccessors<DispatchState, RootState>("Test");

export const readFtime = read(dispaVuex.getters.getFTime);

将商店添加到我的 vue 实例后,我尝试访问我的 App.vue 中的 firstTime 变量,如下所示:

@Component
export default class App extends Vue {
  // fTime: boolean;
  get fTime(): boolean {
    return readFtime(this.$store);
  }
}

查看调试器时,商店中的所有内容都已完美初始化,但我的 App 实例的 fTime 未定义。

为什么会这样?关于事物的制作顺序,我有什么不明白的吗?

PS。firstTime 是 Dispatcher 类的成员

标签: vue.jsvuejs2vuexvue-class-components

解决方案


因此,在仔细查看 vuex-typescript 自述文件中给出的示例后,我注意到我在调用函数时传递了错误的命名空间getStoreAccessors

使用dispaVuex而不是Test这样解决了问题:

const {read} = getStoreAccessors<DispatchState, RootState>("dispaVuex");

推荐阅读