如果我的 Redux Store 中的状态是可观察的,我应该在每个需要它的组件中订阅它还是在一个地方订阅并作为输入传递?

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 中的用户状态。

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

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

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

答案有几点:

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

但是... 关于好的架构的几句话。最好将组件分为两类:"smart" 和 "dumb".

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

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

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