使用 redux 时访问有效状态是一种反模式吗?

Is it an antipattern to access state in an effect when using redux?

我在 Angular v4.

中使用 NGRX

当前模式的示例如下。

  1. Dispatch BEGIN_AUTH 执行一些操作并更新商店的操作。
  2. 调度 COMPLETE_AUTH 操作。

"listens" 对于 COMPLETE_AUTH 操作需要访问存储以从中获取数据以便调用 API 的效果(这是 COMPLETE_AUTH) 行动。

我注意到在 NGRX 中,从商店获取最新的方法已被删除(参见:https://github.com/ngrx/store/issues/147),现在的一般建议是在效果中使用 .withLatestFrom(...) 来获取最新的存储数据。

然而,这让我开始思考从商店获取最新价值是否始终是一种反模式,因为商店数据是可观察的,我应该始终订阅它。

是这样吗?

在我的示例中,我确实从商店订阅了各种东西。但在这种情况下,我需要商店中的数据才能进行 API 调用。

最好的方法是什么?

However, this got me thinking as to if getting the latest value from the store is always an anti pattern as the store data is observable and I should always be subscribing to it.

Is this the case?

您的问题相当广泛,但简短的回答是否定的。获取最新值不是反模式,对于 RXjs 来说是很常见的事情。还应注意,它也可以是同步操作。 (这就是为什么这个 API 变化让很多人感到困惑的原因。)

https://github.com/ngrx/store/blob/6a588ad755cc6511368a084b1bac94b260d24ed1/README.md#getstate-getvalue-and-value

稍微长一点的答案是它可能是一个不好的模式,这取决于你的陈述最终是如何组成的。