Vue.js:vuex 操作中未捕获的承诺

2023-12-31

我了解 vuex actions 返回承诺,但我还没有找到处理错误的理想模式在 vuex 中。我当前的方法是在我的 axios 插件上使用错误拦截器,然后将错误提交到我的 vuex 存储。

in 插件/axios.js:

export default function({ $axios, store }) {
    $axios.onError(error => {
        store.dispatch('setError', error.response.data.code);
    });
}

in 商店/index.js:

export const state = () => ({
    error: null,
});

export const mutations = {
    SET_ERROR(state, payload) {
        state.error = payload;
    },
}

export const actions = {
    setError({ commit }, payload) {
        commit('SET_ERROR', payload);
    },
};

然后我会使用误差分量观察错误状态并显示是否有错误。因此确实有无需捕获任何错误在我的操作或调度该操作的组件中。但我还是忍不住担心糟糕的设计导致异常未被捕获?如果我按照这种设计处理错误,可能会遇到什么问题?有什么更好的方法来做到这一点的建议吗?


I would argue that you should make the API call in the vuex action and if it fails, reject the promise with the error from the API call. I would avoid listing to all Axios errors and instead handle the error when it is returned in the promise, in my opinion, it would be easier to maintain and debug this way vuex usage

例如:

getCartItems: function ({commit}, url) {
    return axios.get(url).then(response => {
      commit('setCartItems', response.data)
      return response
    }).catch(error => {
      throw error
    })
 },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue.js:vuex 操作中未捕获的承诺 的相关文章

随机推荐

  • 默认的 mb_internal_encoding() 值从何而来?

    如果我要编写一个新的 php 文件 并包含echo current mb internal encoding mb internal encoding 输出值从哪里来 它是如何 决定 如何管理的 背景 我编写了一个网络应用程序 我以为我已经
  • 将 JavaScript 模块或库导入 TypeScript

    多年来我一直在为同样的问题而苦苦挣扎 我似乎无法弄清楚如何可靠地使用 TypeScript 中的 JavaScript 库 我似乎是偶然让它工作的 然后继续前进 多年来都没有重新访问这些代码 直到外部变化导致破坏 就像今天我更新 VS 20
  • webRTC 数据通道消息的最大大小是多少?

    我正在尝试 webRTC 似乎每条消息中可以发送的字节数有任意限制 This guy https github com rohansingh rtc p2p我使用的示例选择了 100 加上一些 字节的限制 在我的测试中 它似乎接近 200
  • 为什么 Python 的 eval() 拒绝这个多行字符串,我该如何修复它?

    我正在尝试评估以下制表符缩进字符串 for index in range 10 os system echo str index 我得到 出现错误 语法无效 第 1 行 它在抱怨什么 我是否需要缩进以匹配 eval 语句 或者将其写入字符串
  • WPF 沿路径绘制箭头

    只是想知道我如何沿着路径绘制箭头 路径将改变方向并经过几个不同的点 箭头旨在向用户显示他们需要沿着路径行进的方向 我尝试过使用画笔 但它不起作用 因为我需要箭头来沿着路径调整它们的方向 See 路径动画概述 http msdn micros
  • 矢量push_back移动实现

    在我的教科书中 向量push back移动实现的实现是 void push back Object x if theSize theCapacity reserve 2 theCapacity 1 objects theSize std m
  • 何时处置带有子任务的 System.Threading.Task?

    我有一个启动多个子任务的任务 例如 任务 A 创建 B C D E F 我还创建了一个System Threading Timer每 10 秒轮询一次数据库以检查计划项目是否已按请求取消 如果是 则设置CancellationTokenSo
  • Java 8 和 Spring 4:在界面中使用自动装配

    Java 8 添加了一个新功能 通过该功能我们可以在接口中提供方法实现 Spring 4中有没有什么方法可以让我们在接口中注入可以在方法体内使用的bean 下面是示例代码 public interface TestWiring Autowi
  • 为什么 print("text" + str(var1) + "more text" + str(var2)) 被描述为“未批准”?

    为什么下面的代码在 Snakes and Coffee 对 Blender 的帖子的评论中被称为 古老的不被批准的打印方法 在python中打印多个参数 https stackoverflow com questions 15286401
  • Java Apache Commons getPercentile() 结果与 MS Excel 百分位数不同

    我有一个算法可以计算percentile 85 with Apache Commons一系列值 12 个值 供以后使用阈值进行评估以做出决定 结果与 Excel 给出的结果类似 但不相等 有时这对我的应用程序至关重要 因为使用 Excel
  • 如何在 C# 中将我自己的 wsdl 包含在我的 Web 服务中

    我有一个 wsdl 文件 我的 Web 服务 旧的 asmx 样式 必须实现它 这已得到照顾 当我发布 Web 服务时 您可以使用 wsdl 参数调用它以获取生成的 wsdl 如何包含我的 wsdl 文件 以便返回该文件而不是生成的文件 是
  • 语法错误:找不到或无法读取要导入的文件:foundation/common/ratios

    我安装了 Foundation 当我编辑并保存 app scss 文件时 它会在项目的 sass 文件夹中创建一个 app css 和一个 config rb 文件 当我打开 app css 文件时我得到这个 Syntax error Fi
  • 按对象的 NSDate 属性对对象数组进行排序[重复]

    这个问题在这里已经有答案了 可能的重复 如何对其中包含自定义对象的 NSMutableArray 进行排序 https stackoverflow com questions 805547 how to sort an nsmutablea
  • 如何使用nodejs/express上传和读取文件

    有各种各样关于此的帖子 但我仍然不明白 我想上传 csv 并读取和处理其内容 我的玉文件是这个 views import jade extends layout block content h1 title form action impo
  • 扩展 Google 地图 + D3 示例以添加路径或线路

    我正在尝试修改这个Google 地图 D3 示例 http bl ocks org 1125458包括点之间的线 我采取的方法是为每行添加新的 svg 元素 我成功创建了一组新的 svg 元素 var markerLink layer se
  • Java 字符串参数

    我来自 net 背景 想知道创建返回布尔值并修改通过参数传入的字符串的方法的可接受方式 我知道字符串在 Java 中是不可变的 因此下面的代码片段将始终生成一个空字符串 我只能返回布尔值 不能抛出异常 如果我需要将 String 类包装在
  • 301 重定向在 WordPress 中无法通过 .htaccess 工作

    我尝试在 WordPress 中的 htaccess 文件中应用两个 301 重定向 但收到 404 错误 这是我所拥有的 BEGIN WordPress
  • C++ 参数协方差

    我想知道为什么 C 不支持参数的协方差 如下例所示 或者是否有办法实现它 class base public virtual base func base ptr return new base class derived public b
  • C#中抽象类不能被密封?

    我在某处读过 抽象和密封修饰符相当于静态类 我还发现 当你声明一个静态类时 编译器会在内部将该类标记为抽象和密封 并在 IL 代码中创建一个私有构造函数 所以 我决定这样做 static class A public static void
  • Vue.js:vuex 操作中未捕获的承诺

    我了解 vuex actions 返回承诺 但我还没有找到处理错误的理想模式在 vuex 中 我当前的方法是在我的 axios 插件上使用错误拦截器 然后将错误提交到我的 vuex 存储 in 插件 axios js export defa