使用redux时,它是否是在效果中访问状态的反模式?

时间:2017-09-04 07:52:03

标签: angular redux ngrx ngrx-effects

我正在使用NGRX和Angular v4。

当前模式的一个例子如下。

  1. 发送BEGIN_AUTH动作,它执行一些操作并更新商店。
  2. 发送COMPLETE_AUTH操作。
  3. "听"对于COMPLETE_AUTH操作,需要访问存储以从中获取数据,以便调用API(这是COMPLETE_AUTH的副作用)操作。

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

    然而,这让我想到如果从商店获取最新价值总是反模式,因为商店数据是可观察的,我应该总是订阅它。

    是这样的吗?

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

    最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

  

然而,这让我想到是否从中获取最新价值   商店始终是反模式,因为商店数据是可观察的   我应该永远订阅它。

     

是这样的吗?

你的问题相当广泛,但简短的回答是否定的。获取最新值不是反模式,并且是RXj的常见现象。还应注意,它也可以是同步操作。 (这就是为什么这个API变化让很多人感到困惑。)

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

稍微长一点的答案是它可能是一个糟糕的模式,取决于你的语句最终如何组成。