【发布时间】:2021-09-13 03:57:36
【问题描述】:
在远离 vue 多年后,我正在用 vue+vuex+typescript 编写应用程序。我明白了概念,但很多东西都变了!
我在尝试使用 vuex mapState 辅助函数时遇到了一个奇怪的问题。我有一个名为 animationCanvas 的商店模块:
import { Module } from 'vuex'
import { RootState } from '../types'
import { AnimationCanvasState } from './types'
const state: AnimationCanvasState = {
frames: [],
}
export const animationCanvas: Module<AnimationCanvasState, RootState> = {
state,
}
我将它拉入我的根存储模块并注册它:
import { createStore, StoreOptions } from 'vuex'
import { RootState } from './types'
import { animationCanvas } from '@/store/modules/AnimationCanvas'
const store: StoreOptions<RootState> = {
modules: {
animationCanvas,
},
}
当我使用直接从$store 属性中提取的组件中的商店时,它可以正常工作:
import { Vue, Options } from 'vue-class-component';
@Options({
name: 'Animation Canvas',
computed: {
frames() {
return this.$store.state.animationCanvas.frames;
},
},
})
export default class AnimationCanvas extends Vue {
...
但是当我尝试通过 mapState 辅助函数添加它时,我什么也没得到:
import { Vue, Options } from 'vue-class-component';
import { mapState } from 'vuex';
@Options({
name: 'Animation Canvas',
computed: {
...mapState('animationCanvas', ['frames']),
},
})
export default class AnimationCanvas extends Vue {
而且我知道该模块在那里并且命名正确,部分原因是它在 $store 样式路径中工作,但也因为我可以在开发工具中看到它:
我一直在查看文档,但无法完全弄清楚。有什么想法吗?
【问题讨论】:
标签: typescript vue.js vuex