处理 React Redux 应用程序中的异步错误

2024-01-11

不久前丹发推文

“当我看到

`.then(() => dispatch(...)).catch(...)` 

在 React 项目中。如果组件在调度期间抛出异常,你就会陷入困境。”

并说解决方案是如此简单。只是不要链接 catch()afterthen() 渲染 UI。相反,将错误处理程序作为第二个参数传递给 then()。

有人可以解释为什么会出现这种情况吗?

就我而言,我正在进行 ajax 调用,因此我假设我将进入内部,获取任何 200 作为服务器响应的内容,并捕获任何非 200 的内容,即来自服务器的错误。我在这里错过了什么吗?


所以丹的意思是Async请求,您期望成功调用会导致.then()被召唤,既然你是dispatching an action in .then()这反过来会更新 redux 存储,从而更新 UI,所以如果 UI 更新过程中出现任何错误,.catch()也会被调用,而您希望它仅在服务器返回错误时被调用

解决方案是像这样处理它

.then(
function (){
    //handle success
    dispatch({...})
},
function () {
    //handle reject() and Error for Async request

})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 React Redux 应用程序中的异步错误 的相关文章

随机推荐

  • 如何告诉 qemu 将 ram 复制到文件中

    我正在制作一个操作系统 并使用 Qemu 对其进行调试 我想要一种方法来读取一些指令末尾的内存的一些大块 怎么做 可以对 Qemu 说将 ram 复制到文件中吗 如果不是我能做什么 qmp 或 hmp 命令dump guest memory
  • IDEA - “从外部模型导入”与“从现有源创建”?

    在IDEA 11中 从外部模型导入项目 和 从现有源创建项目 有什么区别 我已经在现有代码上测试了这两个功能 计算创建的文件数量和大小增加 似乎这两个功能都做同样的事情 那么何时使用第一个功能和何时使用第二个功能的黄金法则是什么 通过 从外
  • 网站不会向下滚动

    我的网站可以在 15 英寸笔记本电脑上运行 但每当我调整浏览器大小时 我网站上的一些信息就会 消失 因为我无法滚动 滚动条不会出现 我的两个网站 它们是学校项目的一部分 遇到了这个问题 在第一个网站上 当在较小的浏览器窗口中查看网站时 粘性
  • 在 d3 sunburst v4 中旋转标签

    我尝试使用 d3 v4 sunburst 来可视化 json 中的一些数据 我可以用我想要的标签显示旭日图 但左侧的标签是颠倒的 我尝试了各种方法 我在其他来源找到了这些方法 但对我来说没有任何作用 这是我的编码
  • 华为应用画廊。我的应用如何在中国大陆市场发布?

    我的应用程序已经在Appgallery上获得批准 但可能华为在中国大陆市场的批准非常严格 他们给我发了一封拒绝在中国发表的邮件 我修改了应用程序和应用程序版权信息 但在中国境外发布时未获得批准 华为给我发了邮件 但是很复杂 我不知道如何提供
  • OneDrive for Business:“invalid_request”,“error_description”:“AADSTS90014:请求正文必须包含以下参数:'grant_type

    我正在尝试将 OneDrive for Business 集成到 Web 表单应用程序 为此 我使用给出的文档this url https dev onedrive com auth aad oauth htm在网络表单应用程序中 我有两个
  • 如何导出 Vagrant 虚拟机以进行传输

    我有一个 vagrant box 已启动并正在运行 配置有 LAMP 堆栈 我需要将其转移到另一台电脑上 我怎样才能导出它 我想我可以获得一个可以复制到另一台电脑的文件 这样我就可以运行一些命令来导入流浪盒 你有两种方法可以做到这一点 我称
  • NodeJS - 如何删除文本文件的第一行而不读取所有行?

    我的 S3 存储桶中有以下文件 field1 field2 field3 VAL11 VAL12 VAL13 VAL21 VAL22 VAL23 VAL31 VAL32 VAL33 最终目标是仅删除文件的第一行field1 field2 f
  • nhibernate 3.3 一对多映射代码更新子项而不是插入

    我与 旧 nhibernate 或 flutter 建立了无数次的一对多关联 但我无法让它与代码映射一起工作 这些是课程 public class Parent public virtual IList
  • MySQL中如何计算NULL值?

    我想知道如何找到 MySQL 数据库中所有 NULL 值 例如我试图显示所有还没有平均值的用户 这是 MySQL 代码 SELECT COUNT average as num FROM users WHERE user id user id
  • 过滤 mysql 复制(ignore-db)

    mysqlignore db 根据服务器 my cnf 工作 AFAIK i e binlog ignore db mysql replicate ignore db mysql 我不确定 如果这也适用于客户端 任何人都可以解释该机制 我如
  • 如何告诉 Ninject 绑定到它没有引用的实现

    我在用着NinjectMVC3 http nuget org List Packages Ninject MVC3在我的 ASP NET MVC3 项目中 我有3层 Foo Web Foo 服务 Foo Data Foo Web 引用 Fo
  • 如何在 PHP 页面中包含 JSP

    我希望在 PHP 模板中包含包含 Java 代码的 JSP 文件 有问题的两个包含文件是头文件和页脚文件 有人有这样做的经验吗 我们正在考虑仅执行 HTTP 请求来独立地从 JSP 文件中获取生成的 HTML 但不确定这样做是否会出现轻微的
  • APNS 不适用于 Adhoc 构建

    我正在使用具有临时配置文件和证书的应用程序 该申请尚未发布 但 APNS 给出了错误8 无效令牌 以下事项已被检查 应用程序具有授权密钥
  • NDK Android - 无法同时构建 ARMv5 和 V7

    我面临一个奇怪的问题 我正在为我的 Android 应用程序构建一个共享库 我无法同时构建armv5和armv7 如果这样做 我会在第二次运行时 当 ndk 构建 armV7 库时 在源文件中出现很多错误 例如 FinderPatternI
  • 更改 DOJO 小部件的默认样式

    我希望能够更改一些默认的 CSS 样式 例如 dijit TitlePane 而无需破解 工厂安装的 CSS 主题 我想做的是删除Title and 内容外层TitlePane 的边框 在声明小部件时设置一个类 在本例中为 无边框 不起作用
  • Ajax 在单击按钮上重新加载 div 内容

    我的想法是 我有一个主 DIV 其中包含汽车信息的内容迷你 div 每行分为两个 这是我通过数据库查询得到的 我希望在按下该按钮时使用来自DB 这可能吗 请指教 代码如下所示 div class SearchBlocks div class
  • 无法从 c# 中保存 Gnuplot png

    我试图从 c 中打开 gnuplot 并让它保存图表的 png 我有两个问题 1 gnuplot 的黑色命令行框和实际绘图都会出现 我希望这两个都不要出现 2 将终端设置为 png 并绘制 sin x 后 它实际上并没有保存文件 不过 这些
  • 如何在Xamarin中调用API在UI上显示数据

    我对 Xamarin 有点陌生 正在开发 iOS 应用程序 我需要调用 API 并绑定响应数据以查看已使用的MVVM图案 这是我的ViewModel Code public class PersonalDetailModel BaseVie
  • 处理 React Redux 应用程序中的异步错误

    不久前丹发推文 当我看到 then gt dispatch catch 在 React 项目中 如果组件在调度期间抛出异常 你就会陷入困境 并说解决方案是如此简单 只是不要链接 catch afterthen 渲染 UI 相反 将错误处理程