【问题标题】:How to call a commit and dispatch asynchronously from same action?如何从同一操作异步调用提交和分派?
【发布时间】:2019-01-14 15:15:21
【问题描述】:

我想在突变完成它的工作后执行一个动作。

突变(SOME_MUTATION)来自同一个商店,动作(test/testAction)来自一个模块

someAction(context, data) {
    context.commit('SOME_MUTATION', data) // this should be committed first
    context.dispatch('test/testAction') // this action should be dispatched after the above commit
}

注意:我不知道这是否是默认行为

【问题讨论】:

    标签: vuejs2 vuex vuex-modules


    【解决方案1】:

    你可以把你的someAction(context, data)改成这个

    someAction({commit, dispatch}, data) {
        call.action()
        .then(=> {
        commit('some_mutations',data)
        dispatch('another_action')
        }
    }
    

    使用{commit, dispatch} 将允许您同时使用两个内部操作,而不必说context。因为动作只接受你作为单个对象传入的 2 个参数,所以你仍然可以传入 data 参数。

    【讨论】:

    • 我想仅在提交 some_mutations 突变后调度操作 another_action
    • @Naresh,您能否详细说明您在问题中要完成的工作?例如,您从中调用操作的组件以及如果可能的话,为什么需要在调度操作之前完成突变?
    • 一旦突变被提交,我想在另一个模块的状态下分配新提交的值,我正在从Home组件调用操作
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2017-09-09
    • 2016-06-21
    • 1970-01-01
    • 2020-01-09
    • 2012-08-20
    相关资源
    最近更新 更多