问题描述
我正在与 Typescript 一起探索 Vuex 模块。 我有一个关于 {root: true} 的问题。当在一个动作模块中调度另一个突变模块时。
例如:
模块一
export interface ActionsOneType {
[ACTIONS_FETCH_DATA](
{commit}: AugmentedActionContext
): void
}
export type MutationsOne<S = ModuleStateTypeOne> = {
[MUTATIONS_MODULE_ONE](state: S,payload: S): void
}
export const actionsOne: ActionTree<ModuleStateTypeOne,ModuleStateTypeOne> & ActionsOne = {
async [ACTIONS_FETCH_DATA]({commit}){
try {
commit(MUTATIONS_MODULE_TWO.SET_STATUS,'loading',{root: true}) // error in this line**
const serverData = await getDataFromServer()
commit(MUTATIONS_MODULE_ONE,serverData )
commit(MUTATIONS_MODULE_TWO.SET_STATUS,'success',{root: true})// error in this line
} catch (error){
commit(MUTATIONS_MODULE_TWO.SET_ERROR_MESSAGE,error,{root: true}) // error in this line TS2554
} finally {
commit(MUTATIONS_MODULE_TWO.SET_STATUS,'Failed',{root: true}) // error in this line TS2554
}
}
}
模块二
export type MutationModuleTwo<S = ModuleStateTwo> = {
[MUTATIONS_MODULE_TWO.SET_STATUS](state: S,payload: string): void
[MUTATIONS_MODULE_TWO.SET_ERROR](state: S,payload: string): void
}
export const mutationsModuleTwo: MutationTree<ModuleStateTwo> & MutationModuleTwo= {
[MUTATIONS_MODULE_TWO.SET_STATUS](state,payload) {
state.status = payload
},[MUTATIONS_MODULE_TWO.SET_ERROR](state,payload) {
state.error = payload
}
}
错误消息 - TS2554:需要 2 个参数,但得到 3 个
使用 root 属性 {root: true} 只是让 VUEX 存储知道我想分派其他模块,但参数 {root: true} 不使用 like payload 来改变另一个状态。
我不知道如何解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)