带 Flux 的错误处理程序

2024-01-14

我有一个 React.js 应用程序,正在重构它以使用 Flux 架构,并且正在努力弄清楚错误处理在坚持 Flux 模式的同时应该如何工作。

目前,当遇到错误时,会触发 jQuery 事件“AppError”,并且订阅此事件的通用错误处理助手会在用户屏幕上放置一条 Flash 消息,记录到控制台,并通过 API 调用进行报告。好处是我可以出于任何原因从应用程序的任何部分触发错误,并以一致的方式处理它。

我似乎无法弄清楚如何在 Flux 架构中应用类似的范例。这是我正在努力解决的两个特定场景。

1)API调用失败

我的所有 API 调用都是由操作创建者进行的,并且我使用承诺在失败时调度错误事件(即“LOAD_TODOS_FAILED”)。商店看到此事件并相应地更新其状态,但我仍然没有上一次迭代(通知等)中的通用错误行为。

可能的解决方案:

我可以创建一个绑定到“LOAD_TODOS_FAILED”操作的 ErrorStore,但这意味着每次出现新类型的错误时,我都需要将该操作显式添加到 ErrorStore,而不是自动处理所有错误。

2) 商店收到意外操作

这是我真正感到困惑的一点。我想处理将操作分派到商店的情况,而鉴于商店的当前状态,该操作没有意义。我可以处理存储中的错误以清理状态,但仍然可能希望触发发生意外情况的错误。

可能的解决方案:

  1. 从存储中调度指示错误的新操作。

    我相信商店不应该调度操作(如果我错了,请告诉我),并且我仍然遇到与上面的 API 错误相同的问题。

  2. 创建一个订阅每个 Store 的用于错误处理的 ControllerView

    我可以在每个商店上定义一个错误属性,然后让一个视图监视每个商店并仅对错误属性进行操作。当错误属性不为空时,它可以调度新的操作等。缺点是,每当创建新的商店时,我需要记住将每个商店添加到此视图,并且每个商店都必须有一个行为相同的错误属性方式。它也没有解决 API 调用失败的问题。

有没有人有适合 Flux 架构的通用错误处理程序的建议方法?

TL;DR

我需要处理大多数 Action Creators 和 Stores 中的错误。如何针对任何类型的一般错误设置一致的错误处理?


  1. API调用失败

如果您想避免列出 ErrorStore 中的每个错误操作,您可以使用通用 APP_ERROR 操作,并使用该操作的属性来更详细地描述它。然后,您的其他商店只需要检查这些属性,看看该操作是否与它们相关。没有规定商店中注册的回调需要关注操作的类型,或者仅关注类型——这通常是确定操作是否相关的最方便且一致的方法。

  1. 商店收到意外操作

不要针对某项操作发出新的操作。这会导致调度内调度错误,并会导致级联更新。相反,应提前确定应调度哪些操作。如果有帮助,您可以在发出操作之前查询商店。

你的第二个解决方案听起来不错,但你提到的危险的事情是“当错误属性不为空时,它可能会调度新的操作等”——同样,你不想发出操作来响应其他操作。这就是 Flux 试图避免的痛苦之路。您的新控制器视图将简单地从存储中获取值并通过呈现正确的视图进行响应。

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

带 Flux 的错误处理程序 的相关文章

  • React/Flux 和 xhr/路由/缓存

    这更像是 你的意见是什么 我的想法正确吗 问题 在理解 Flux 的同时尽可能严格 我试图弄清楚 XHR 调用在哪里进行 websockets 外部刺激处理 路由发生等 根据我阅读的文章 采访和 Facebook 示例 有几种处理这些事情的
  • 为什么在 Flux 应用程序架构中每个实体使用一个存储?

    我正在一个项目中使用reactjs 和flux 架构 我对如何将嵌套数据正确分解为存储以及为什么我应该将数据拆分为多个存储感到有点困惑 为了解释这个问题 我将使用这个例子 想象一个有项目的 Todo 应用程序 每个项目都有任务 每个任务都可
  • 如何将外部图像 url 与 React Flux Store 一起使用?

    我正在使用 React Flux utils 从服务器访问数据并将数据存储在 Flux 存储中 该数据包含标题内容 描述内容和图像外部 url 例如 http www google com sample jpg http www googl
  • React/Redux 架构中 API 调用应该放在哪里?

    我正在尝试从 API 检索一些数据并将其传递到我的应用程序中 然而 作为 React Redux 的新手 我想知道从哪里进行这些调用以及如何将其传递到我的应用程序中 我有标准的文件夹结构 组件 减速器 容器等 但我不确定现在将 API 调用
  • 如何在react.js中使用Enter键提交表单?

    这是我的表单和 onClick 方法 我想在按下键盘的 Enter 按钮时执行此方法 如何 N B 没有jquery被赞赏 comment function e e preventDefault this props comment com
  • 将 React 的不可变助手与 Immutable.js 结合使用

    我正在研究助焊剂应用并正在考虑采用不可变 js https github com facebook immutable js来维持状态 我看到 React 提供了自己的帮助器来更新不可变对象 http facebook github io
  • Flux 存储将更改发送到特定的 React 组件而不是所有组件。

    努力寻找或想出一个优雅的答案 如果我有多个动态反应组件正在侦听一个通量存储以更新其子组件 是否可以发出对特定组件的更改 而不是向注册以侦听该存储上的更改的所有组件发出更改 例如 动态组件有一个按钮 单击时它会告诉通量存储将一些数据发送到 A
  • 带 Flux 的错误处理程序

    我有一个 React js 应用程序 正在重构它以使用 Flux 架构 并且正在努力弄清楚错误处理在坚持 Flux 模式的同时应该如何工作 目前 当遇到错误时 会触发 jQuery 事件 AppError 并且订阅此事件的通用错误处理助手会
  • 使用react-router登录后自动重定向

    我想在我的应用程序中建立一个 Facebook 登录反应 反应路由器 通量应用 我在登录事件上注册了一个侦听器 并且希望将用户重定向到 dashboard 如果他们已登录 我该怎么做 location push除非完全重新加载页面后 否则效
  • 使用 React 发出和处理全局事件

    我正在玩一点反应来构建一个 添加到购物车按钮 这是我的代码 var ProductPurchase React createClass handleSubmit function e e preventDefault ajax url ca
  • Flux:如何让一个动作等待存储?

    我正被一个 React 问题困住了 我确信这个问题不会像我现在看起来那么困难 我正在针对 RESTful 服务器 API 构建一个单页应用程序 该 API 返回资源以及描述可以使用该资源执行的操作的链接 我试图确保我的客户端的 ajax 调
  • React-router:通过路由传递数据

    我正在尝试找出通过路线传递数据的最佳方式 我知道我可以使用参数 但某些类型的数据不属于参数 例如 我有一个显示应用程序列表的索引页 每个应用程序旁边都有一个按钮 可将您引导至该应用程序的视图 我想将应用程序本身传递给应用程序处理程序 然而
  • Redux 状态通过数据库持久化

    从讨论来看here https stackoverflow com questions 32949859 redux opinions examples of how to do backend persistence 33055146看来
  • 在回流中,我如何从asp.net web api获取数据

    我正在使用reactjs的回流 从Store的回流动作中 我编写了一个动作来从asp net web api获取数据 我认为这只是获取使用ajax的数据的唯一方法 有人跟我说 我可以使用插件jquery获取数据 但我不这样做不要相信它 因为
  • 如何删除/卸载嵌套的反应组件

    我想卸载单个反应组件 该组件属于总共包含三个组件的父组件 父组件有这个渲染函数 render function return div div
  • React 应用程序之间可以通信吗?

    我的项目是三个 React 应用程序的旅程 我想使用从应用程序 1 到应用程序 2 以及从应用程序 2 到应用程序 3 的一些数据 如果要传递的数据很小 我会将其传递到第二个应用程序的 url 中的查询参数中 如果数据很大或私密 我计划将其
  • Flux waitFor() 和异步操作,如何建模。

    我使用 pouchDB 作为应用程序的本地数据库 我想查询 PouchDB 的结果并将其加载到 React js 中 然而 即使我使用 waitFor 方法 PouchDB 查询的结果返回得太晚了 我想我不明白 waitFor 的用法是否正
  • 如何在 Redux 减速器中处理树形实体?

    我有点陷入思考如何实现一个减速器 其中它的实体可以有相同类型的子级 让我们以 Reddit 评论为例 每个评论都可以有子评论 子评论本身也可以有评论等 为了简单起见 评论是类型的记录 id pageId value children wit
  • 双向数据绑定(Angular)与单向数据流(React/Flux)

    上周 我一直在试图弄清楚如何双向数据绑定 Angular https docs angularjs org guide databinding and 单向数据流 React Flux https youtu be i 969noyAM是不
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin

随机推荐

  • 如何在 Svelte 中使用 Web 组件?

    我想使用一些网络组件https github com microsoft vscode webview ui toolkit https github com microsoft vscode webview ui toolkit 但我不知
  • jquery代理传递参数

    绑定事件处理程序时如何通过代理传递字符串 我想将附加到目标处理程序的数据属性传递给对象的方法 这可能吗 function ReservationSchedulePicker reservationType Reservation Type
  • 如何查找 Coq 证明策略的定义或实现?

    我正在看this https github com coq coq blob cdfe69d6da6b32338ba74c9f599c74389089c9dd theories Numbers Natural Abstract NAdd v
  • WIX:我的 CustomAction 应在何处以及如何创建和读取临时文件?

    我有一个脚本 CustomAction 是的 我知道所有关于不要使用脚本 CustomActions 我有不同意见 我想运行命令并捕获输出 我可以使用 WScript Shell COM 对象执行此操作 然后调用shell Exec 但是
  • 如何动态改变这个随机数生成器的曲线?

    该函数生成一个随机数 但概率曲线倾向于较低范围 function getRandomLowNumber min 1 max 100 factor 1 let num getRandomDecimal min max let rollDiff
  • 将我的 PDO 连接保存为全局变量 [重复]

    这个问题在这里已经有答案了 在询问有关 PDO 查询的另一个问题时 我被告知将 PDO 连接对象保存为全局对象以在调用数据库查询的各种函数中使用它通常是不好的做法 以下是我通常如何使用 PDO 对象 function somefunctio
  • std::forward 无法转换大括号括起来的初始值设定项列表

    为什么 struct screen 无法正确初始化框架结构 我想要的是初始化屏幕结构并直接初始化 2 个框架结构 include
  • SIFT 算法中奇怪的 Octave 值?

    我在 opencv 代码中使用 sift 算法从图像中获取描述符和关键点 我的代码是 Ptr
  • 获取过滤数组项的索引

    在 JavaScript 中 我有以下数组 var arr 5 10 2 7 从该数组中 我想获取一个仅包含小于 10 的项目索引的数组 因此 在上面的示例中 索引数组将是 var indexes 0 2 3 现在 我想要类似的东西filt
  • 快速数字格式化

    我刚刚开始了解 Swift 但我在极其基础的数字格式化方面遇到了严重的问题 例如 我需要显示至少 2 位数字的整数 例如 00 01 02 03 04 05 我期望的正常语法是这样的 println 02i 02i 02i var1 var
  • 非 LL(1) 的 LL(2) 语言

    为了进一步了解解析器和语法 我正在寻找一个 希望简单的 示例language即 LL 2 但不是 LL 1 也就是说 可以由 LL 2 语法生成但不能由任何 LL 1 语法生成的语言 该课程中有有用的语言吗 也就是说 我们可以想象一种 LL
  • WOW.js 无法与 Wordpress 正常工作

    所以我试图让 wow js 和 Animate css 在我的 WordPress 模板上工作 我已经将它们全部链接得很好 它不会引发任何错误 并且动画确实有效 但由于某种原因 动画是在页面加载时触发的 而不是在页面滚动时触发的 效果是所有
  • 如何使用mysql join更新记录?

    在我的 mysql 中 我有 t1 t2 表 我想根据 t1 的字段值与 t2 的字段值匹配 从 t2 的字段值更新 t1 的字段 我尝试了以下但它没有更新 我在这里做错了什么 UPDATE t1 INNER JOIN t2 ON t1 n
  • Sinon-chai CalledWith(new Error()) 并带有确切的消息

    我需要测试这个功能 user js function getUser req res next helper get user param1 param2 err file gt if err return next err 这是我的测试功
  • 如何找到我自己的 Facebook ID? (不是应用程序范围的 ID)

    我以前可以访问我的 Facebook 个人资料页面https www facebook com https www facebook com 用户名 并将 www 替换为 graph https graph facebook com htt
  • Swift 中的 CocoaLumberjack,如何打印行号和文件名称

    我是 CocoaLumberjack 的新手 我让它在 Swift 上工作如下this https github com CocoaLumberjack CocoaLumberjack issues 405 如果我尝试打印日志 DDLogD
  • POM 中的多个依赖范围

    我的 POM 中有一个依赖项 需要将其设置为 提供 因此它不会包含在编译中 但仍然可以在我的项目中引用 当我去运行测试时 我希望相同的依赖项具有 测试 范围 这样我就不必手动将 jar 添加到我的类路径中 有没有办法做到这一点或达到类似的结
  • 在 lm lapply 调用列表中使用权重参数[重复]

    这个问题在这里已经有答案了 这是我的问题 为了可重现而虚构的数据 set seed 42 df lt data frame x rnorm 1000 y rnorm 1000 z rnorm 1000 df2 lt data frame x
  • CMake 和处理子文件夹头文件

    我正在尝试设置我的项目来构建几个包含其完整功能的动态库 每个库都有子文件夹 子文件夹库相互依赖 因此它们必须相互引用函数 我似乎已经成功地让 CMake 在项目上运行而没有错误 但是当我去构建时 我的标头无法找到彼此 似乎在构建时 包含路径
  • 带 Flux 的错误处理程序

    我有一个 React js 应用程序 正在重构它以使用 Flux 架构 并且正在努力弄清楚错误处理在坚持 Flux 模式的同时应该如何工作 目前 当遇到错误时 会触发 jQuery 事件 AppError 并且订阅此事件的通用错误处理助手会