关于vuex中module的类型
来源:2-21 【讨论题】对 Typescript 初步学习后的印象和困惑
有没有没被占用的昵称
2021-04-14
老师,我看了你在这个问题下的回复,但是如果按照这个方法来的话,是不是也就意味着,不能在根state下定义变量了呀。
老师我是这么写的,如果不在根state下定义是没问题的,可能是因为用了InjectionKey的原因吧。如果在RootState下定义app,跟state就会报错,因为没有定义app。是不是不能共存呀
// store/index.ts
import { InjectionKey } from 'vue’
import { createStore, useStore as baseUseStore, Store } from 'vuex’
import app from ‘./modules/app’
export interface RootState {
name: string;
age: number;
}
export const key: InjectionKey<Store> = Symbol(‘store-key’)
const store = createStore({
state: {
name: ‘wang’,
age: 29
},
mutations: {
},
actions: {
},
modules: {
app
}
})
export default store
export function useStore () {
return baseUseStore(key)
}
// store/modules/app.ts
import { Module } from 'vuex’
import { RootState } from ‘…/index’
export interface AppState {
count: number;
}
const state: AppState = {
count: 1
}
const mutations = {
updateCount (state: AppState, num: number) {
state.count += num
}
}
export default {
namespaced: true,
state,
mutations
} as Module<AppState, RootState>
1回答
-
同学你好
按照之前的做法 确实不能在根 state 中定义变量,假如你想在根 state 添加变量,我研究了一下现在的做法必须要在初始化 store 的时候,泛型传入对应的 state 类型,就需要给 modules 添加默认的值,我认为这不是一个特别好的实践。目前还没有找到更好的解决方法。
012021-04-15
相似问题