javascript - 在 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();
});
},
...
解决方案
可以像您的第一个操作一样创建同步操作(无需承诺或其他异步代码)a1
但是,您可以直接调用突变函数,a1
以防万一setNavMenu
。动作和突变之间的主要区别在于,当突变不能时,动作可以是异步的,基本上如果你不需要你的动作来执行异步。代码,您不需要执行任何操作,只需执行突变即可。
有关更多详细信息,您可以查看有关操作的官方文档https://vuex.vuejs.org/en/actions.html
推荐阅读
- excel - to_csv 使 0 消失
- arduino - 尝试在 Energia 上为 MSP430 编译基于 Arduino 的 LoRa 库时出现“错误:SPISettings'没有命名类型”
- mysql - 我如何在 SQL 中合并多个 WHERE (STUCK)
- php - 为什么 PHP 不读取所需的文件?
- c# - Xamarin Forms - 如何将变量的值传递给另一个 .cs?
- angular - Angular - 保持垫扩展面板展开
- python - 如何将带有时区的 datetime.datetime 渲染到 Django 中的 HTML 模板?
- javascript - 基于多个选择框的jQuery过滤json
- angular - 使用 ion-segment 显示图表后,Native Element 未定义为 ionic
- spring - TomEE :- 原因:org.apache.xbean.asm5.MethodVisitor.visitTypeAnnotation 的 java.lang.RuntimeException(未知来源)