【问题标题】:Flux: Where should the intermediate, errors be stored?Flux:中间错误应该存储在哪里?
【发布时间】:2014-11-12 09:22:36
【问题描述】:

Flux 文档指出状态应该存储在 Stores 中。然后应该将与实体相关的加载、保存、错误消息存储在 Stores 中。由于 View 将从 Store 获取其初始状态,因此只有知道其加载/保存是否来自 Store 的方法。

此外,当编辑表单时,用户决定取消编辑,因此这些中间表单值应该存储在 Views 状态中,而不是发送到 Store?

【问题讨论】:

    标签: reactjs reactjs-flux


    【解决方案1】:

    您的输入字段应该有自己的记忆。这意味着 Store 状态(事实来源)与组件中发生的任何更改都是不可改变的。通过操作,这些更改将传达给商店。无论它们成为新的事实还是因错误而失败,Store 状态都将再次不变地复制到组件输入状态。错误,我也会转移到组件,因为它们适用于输入状态,而不是存储状态。

    商店就像数据库,您也很少在其中放置任何临时记录或错误。除非您正在编写一个跟踪输入历史记录的文本编辑器...

    【讨论】:

    • 但是错误/加载需要正确存储在存储中,因为视图会监听存储更新。有没有其他方法可以将操作错误结果传达回 View?
    • 您的商店是否有能力通过附加参数触发? Reflux.js 具有这种能力,因此不需要存储错误,它们只是在触发时传递。
    • 我正在使用默认的通量实现。为错误发出不同的事件是可行的。然后我需要确保错误属于特定组件。
    • 如果您的模型支持错误,那么您就不必担心哪些组件会出现哪些错误。 模型 出错。基本上我会那样做。
    • 模型是一个 json 对象。所以我只是添加一个错误属性。谢谢您的帮助。除非我以后遇到任何问题,否则我会那样做。
    【解决方案2】:

    我以一种非常实用的方式使用 React,因为我的所有数据都作为全局 JSON 对象存储在 React 之外,并且这些数据被注入到顶级组件中。因此,React 对我来说只是一个聪明的模板引擎:将 JSON 转换为 Virtual DOM,然后将 Virtual DOM 应用到真实 DOM。渲染总是从主要组件触发,并且由于不变性而得到优化。 Read more here

    我不同意 Rygu,错误是状态的一部分。商店可能类似于数据库,但这意味着什么?商店应该只包含一些不是“临时”或可能被认为没有意义的东西?

    对我来说,如果你想使用 React 进行函数式编程,那么任何显示为 DOM 的东西都应该首先作为组件的 props 传递,包括错误。如果您不这样做,那么您将依赖副作用来管理 DOM,并且随着时间的推移,将难以推理所有这些副作用。

    【讨论】:

    • atom-react 和 react-cursor 相似吗?我想要更多关于如何使用 atom-react 的文档/示例。
    • 我以前不知道 react-cursors。是的,它非常相似,只是 react-cursors 似乎与 React 高度耦合,并且似乎将整个应用程序状态置于根组件状态中,而 atom-react 具有解耦的 atom/cursor 实现。 Atom-React 是一种粘合剂,它允许将原子状态连接到 React 渲染管道 + 事件总线 + 一种管理状态的自以为是的方式。我会尽快写文档和示例,但我们目前正处于创业热潮中:)
    • 我喜欢你的想法。期待更多文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2015-07-04
    • 2018-10-28
    • 2023-04-07
    • 2014-03-06
    • 2015-05-03
    相关资源
    最近更新 更多