【问题标题】:(redux / ngrx) Would you recommend to store UI related states?(redux / ngrx) 你会推荐存储 UI 相关的状态吗?
【发布时间】:2017-11-19 04:20:33
【问题描述】:

据我了解redux架构的原理,是为了缓解应用状态变化时的复杂性(业务逻辑?)。

但是是否也应该以 redux 方式处理与表示相关的状态? 例如。侧边栏当前是否打开,或者某个信息块当前是否展开等?

ngrx/store example page 中就是这样完成的。但由于应用程序逻辑不依赖于这些表示状态,我看不到它的好处。

【问题讨论】:

  • 迟早你可能会收到这样的功能请求“如果打开侧边栏,请在此处隐藏某些内容”或“如果搜索字段集中突出显示那里的内容”或“如果我隐藏此块,它应该保持隐藏状态页面重新加载后”。存储 ui 状态有助于以非常可预测的方式实现此类请求。
  • 支持存储 UI 状态的一点是,这意味着如果您重放用户会话中调度的所有操作,您最终会得到 UI 数据与第一次完全相同的状态。这意味着如果您序列化错误报告中的操作列表,您可以回放它们并自动重现问题。不过肯定有取舍 - 这意味着您必须跟踪商店中的更多信息。
  • 谢谢伙计们,这两个听起来都很合理。

标签: angular redux ngrx


【解决方案1】:

我同意这确实取决于您的要求,但我们可以考虑一些通用情况,例如管理通知(以便一次显示一个通知)、用户连接(许多功能可能具有特定的 UI,具体取决于那)等等。

【讨论】:

    【解决方案2】:

    我不得不这样做有几个原因(这更具体到 HTTP 请求加载状态、错误状态等):

    • 无法判断 http 状态、成功或错误。当我们发送、发布或加载请求时,它只是一种单向流。如果请求成功或出错,它不会给我们。想象一个 post 请求给出了验证错误,我们需要存储这个

    • 组件代码少,易于编写单元测试,易于重用代码,易于自动化代码。与组件相比,服务总是易于测试。

    • 在多个组件中更新:假设我们在仪表板上显示摘要和组件中的实际数据。我们需要在仪表板中显示数据正在更新,如果状态存储在组件中,则不可能

    • 将应用程序状态存储在本地存储中:一种情况是我必须将 UI 的状态存储在本地存储中。用户对侧边栏的偏好最大化或缩短,文本大小等,即使在这些情况下也必须使用商店。

    【讨论】:

      【解决方案3】:

      每个开发人员都应根据其应用程序的要求来决定。在示例应用程序中,sidenav 的状态并不像您正确指出的那样真正相关,因此主要用于展示目的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多