通量 + 数据生命周期

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

如果在响应返回之前有可能执行多个 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 可能会返回一个描述失败的错误对象。

以上是关于通量 + 数据生命周期的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse数据生命周期管理

ES索引生命周期管理

Vue的生命周期

Vue笔记(Vue生命周期 11个钩子)

Vue生命周期与单向、单次、双向绑定

vue生命周期是啥,有啥作用