如何解决在 VUEX 中创建动作类型的正确方法,当在一个动作模块内调度另一个突变模块时使用 {root: true}?
我正在与 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 举报,一经查实,本站将立刻删除。