【问题标题】:In redux: every components should get the data only from the store?在 redux 中:每个组件都应该只从 store 中获取数据?
【发布时间】:2020-02-23 22:16:07
【问题描述】:

只是在 redux store 上要明确一点,因为 stackoverflow 中的其他答案和问题不足以让我了解指南。

根据我对redux的理解,在redux应用中,每个组件都应该只从store中获取数据?是真的吗?对于所有情况?

那些案例呢?

计时器: 在我的组件中,我显示了一个计数器(开始游戏的倒计时)。所以每秒计数器都会下降。我是否必须调度一个动作来降低商店中的数量,并且因为该组件订阅了商店,所以它得到了更新。这才是redux保持使用的正确方法?我认为它运行额外的脚本来更新我的视图。

自动完成: 我应该将选项存储在商店中吗?

由于所有数据都需要来自商店,我需要将自动完成选项从我的 api 存储到商店。并从商店中检索自动完成选项。

但它必须是每个组件,因为如果我有多个具有不同数据的相同组件怎么办?所以我必须做一个看起来像这样的状态:

state = { fooComponent: { autocomplete: [{ key, value }, ... ] } }

我问是因为它只是我每次显示这些选项时需要显示的临时数据。

【问题讨论】:

    标签: angular redux ngrx


    【解决方案1】:

    并非所有数据都应保存在存储中。

    来自https://ngrx.io/docs#when-should-i-use-ngrx-for-state-management

    特别是,当您构建具有大量用户交互和多个数据源的应用程序时,当在服务中管理状态已经不够用时,您可能会使用 NgRx。

    SHARI 原则可以回答“我需要 NgRx”这个问题的一个很好的内容:

    共享:被许多组件和服务访问的状态。

    Hydrated:从外部存储中持久化和再水化的状态。

    Available:重新进入路由时需要可用的状态。

    已检索:必须通过副作用检索的状态。

    Impacted:受其他来源的操作影响的状态。

    【讨论】:

      【解决方案2】:

      将所有东西都存放在商店中甚至不是一个好习惯。您想将“应用程序状态”存储在商店中。状态可以是“倒计时完成”或“正在进行倒计时”,但不是秒的值。这将是一个矫枉过正。以秒为单位的倒计时值可以完美地存储在倒计时组件的本地状态中。你想保持简单,不要污染 REDUX 操作历史

      【讨论】:

        猜你喜欢
        • 2021-11-05
        • 1970-01-01
        • 1970-01-01
        • 2023-01-27
        • 2018-04-24
        • 2020-06-04
        • 1970-01-01
        • 2016-05-21
        • 2017-06-08
        相关资源
        最近更新 更多