【问题标题】:Flux + Data Lifecycle通量 + 数据生命周期
【发布时间】:2015-02-07 17:46:58
【问题描述】:

在 FLUX 应用程序中,通过初始化等操作将给定的数据集填充到存储中。如果:

  1. 应以增量方式初始化存储。 (一次添加一个用户)。
  2. 如果用户已经在商店中,除非已经有一段时间,否则不要再次获取用户。

在不同的动作创建者中发出 HTTP 请求似乎最终会收到比您想要的更多的请求。你需要两级缓存吗?一个在动作 HTTP API 层(动作创建者)和一个在商店?这似乎不是多余的吗?

【问题讨论】:

    标签: reactjs reactjs-flux


    【解决方案1】:

    我会将所有这些逻辑保留在商店中。关键是为获取、接收和错误设置单独的操作创建者。

    1. 适当地调用增量提取操作。存储处理获取操作,检查是否存在于缓存中。如果没有,它会提出请求。
    2. API 响应被推送到接收操作中。当在商店中处理此操作时,它会以适当的方式将其添加到缓存中,然后启动您的商店更改事件。
    3. 如果响应是错误的,请将其推送到错误操作创建器中,以便您可以在其他地方进行处理。

    如果在响应返回之前有可能执行多个 fetch 操作,您可以像 Micah 一样将占位符推送到缓存中。

    【讨论】:

    • 在这种情况下,您的商店是否直接调用操作?如 Component -> Fetch_Action -> Dispatcher -> Store -> API -> Response -> Receive_Action -> Dispatcher -> Store -> Change_Event -> Component?
    • 是的,在这个例子中,商店确实调用了 Recieve_Action。
    【解决方案2】:

    我们一直在处理商店中的缓存和延迟加载。 userStore.getUser 如果可用则返回缓存的用户,否则直接调用 api 或调用 action creator 来发出 api 请求

    我们尚未决定的一件事是跟踪这些待处理请求的正确方法。现在我们只是在 store 中创建一个占位符对象,然后在我们收到数据后填充它,但是我们无法轻松查看给定对象的请求是挂起还是完成

    【讨论】:

    • 对 getUser 的调用将返回 null,当用户可用时会发出更改事件,您的组件会更新,并再次调用 getUser。您还需要一个错误存储来处理用户加载失败的情况,否则 getUser 可能会返回一个描述失败的错误对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多