【问题标题】:If a state in my Redux Store is an observable, should I subscribe to it in each component that needs it or subscribe in one place and pass as inputs?如果我的 Redux Store 中的状态是可观察的,我应该在每个需要它的组件中订阅它还是在一个地方订阅并作为输入传递?
【发布时间】:2020-08-13 04:00:03
【问题描述】:

目前,当用户登录时,我会在需要用户状态的每个组件中订阅我的 Redux Store 中的用户状态。

我想在多个地方访问用户状态,例如:

  1. 我的应用程序中的侧边栏 - 获取个人资料图片、用户名或 ID
  2. 需要用户 ID 从数据库中检索数据的服务

如果我的用户状态是可观察的,我应该在需要知道用户 ID 的每个组件和服务中订阅它还是只在一个地方订阅?

【问题讨论】:

    标签: javascript angular redux store


    【解决方案1】:

    答案有几点:

    您不需要订阅整个状态。您需要使用选择器createSelector 订阅商店的特定“切片”。 您可以在任何地方订阅它。

    但是... 关于良好架构的几句话。将组件分为两类是一种很好的做法:“智能”和“哑”。

    “智能” - 是负责解析数据并通过输入将其传递给子级的容器。在此处订阅状态更改。

    “Dumb” 组件 - 是应用程序中更细化的部分。他们应该通过输入获取数据并通过输出发出事件。并且里面只包含一些特定的逻辑。

    这样,应用程序的良好结构和在不同部分之间划分职责会容易得多。

    【讨论】:

    • 谢谢,这让我朝着正确的方向前进。到目前为止,关于智能组件和愚蠢组件的花絮帮助我更聪明地思考我的架构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2011-09-17
    • 2021-04-01
    • 2021-11-04
    相关资源
    最近更新 更多