【发布时间】:2020-08-13 04:00:03
【问题描述】:
目前,当用户登录时,我会在需要用户状态的每个组件中订阅我的 Redux Store 中的用户状态。
我想在多个地方访问用户状态,例如:
- 我的应用程序中的侧边栏 - 获取个人资料图片、用户名或 ID
- 需要用户 ID 从数据库中检索数据的服务
如果我的用户状态是可观察的,我应该在需要知道用户 ID 的每个组件和服务中订阅它还是只在一个地方订阅?
【问题讨论】:
标签: javascript angular redux store
目前,当用户登录时,我会在需要用户状态的每个组件中订阅我的 Redux Store 中的用户状态。
我想在多个地方访问用户状态,例如:
如果我的用户状态是可观察的,我应该在需要知道用户 ID 的每个组件和服务中订阅它还是只在一个地方订阅?
【问题讨论】:
标签: javascript angular redux store
答案有几点:
您不需要订阅整个状态。您需要使用选择器createSelector 订阅商店的特定“切片”。
您可以在任何地方订阅它。
但是... 关于良好架构的几句话。将组件分为两类是一种很好的做法:“智能”和“哑”。
“智能” - 是负责解析数据并通过输入将其传递给子级的容器。在此处订阅状态更改。
“Dumb” 组件 - 是应用程序中更细化的部分。他们应该通过输入获取数据并通过输出发出事件。并且里面只包含一些特定的逻辑。
这样,应用程序的良好结构和在不同部分之间划分职责会容易得多。
【讨论】: