首页 > 解决方案 > 在 vuex 中创建动作的正确方法

问题描述

将简单的(不链接 then/catch 调用)vuex-actions创建为 a1 就足够了吗?或者我每次都需要用 Promise 创建为 a2 (+还添加拒绝分支)?

先感谢您...

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);

const debug = process.env.NODE_ENV !== 'production';

export default new Vuex.Store({
    state: { ... }
    ...
    actions: {
        a1: (state, response) => {
            state.commit('setNavMenu',{signIn: true, signUp: true, signOut: false});
        ...        
        },
        a2: (state, response) => {
            return new Promise((resolve) => {
                state.commit('setNavMenu',{signIn: true, signUp: true, signOut: false});
            ...
            resolve();
            });
        },        

...
     

标签: javascriptvue.jsvuex

解决方案


可以像您的第一个操作一样创建同步操作(无需承诺或其他异步代码)a1

但是,您可以直接调用突变函数,a1以防万一setNavMenu。动作和突变之间的主要区别在于,当突变不能时,动作可以是异步的,基本上如果你不需要你的动作来执行异步。代码,您不需要执行任何操作,只需执行突变即可。

有关更多详细信息,您可以查看有关操作的官方文档https://vuex.vuejs.org/en/actions.html


推荐阅读