处理ngrx& amp; NGRX /效应

时间:2017-10-21 17:27:33

标签: angular ngrx ngrx-store ngrx-effects ngrx-store-4.0

我试图在ngrx下设计一个auth机制,但我还没有绕过ngrx。

身份验证的工作方式如下:客户端输入他的电子邮件和密码,使用他的凭据向/ api / auth发出请求,如果凭据不正确,我们会收到错误,并且在登录表格。如果凭据正确,我们会收到用户对象,然后将用户重定向到主页。

以下是我的看法

enter image description here

因此,我所挣扎的部分是@Effect何时收到回复。

我假设在我的商店中我有一个userReducer,其中包含用户的状态。当来自api/auth的响应是用户时,则会将操作SET_USER分派给reducer以设置用户。但是,我不确定如何处理错误消息。

  • 我是否还需要为表格设置减速机?
  • 每张表格都需要减速机吗?在我看来,错误信息并不是应用程序长期存在状态的一部分。它只是应该展示然后被遗忘的东西。
  • 如何重定向登录成功?

1 个答案:

答案 0 :(得分:1)

您可以在效果中使用.catch返回处理此方案的LOGIN_FAILED等操作。你肯定应该有一个reducer来处理这个场景,而不是在reducer中为SET_USER处理它。

我是否需要为每个表单添加一个reducer?

没有。如果您将状态设计为智能,则可以让同一个reducer处理多个错误消息。但是,返回的错误消息应设置为state,因此您可能应该有一个action + reducer来清除错误消息。

如何重定向登录成功?

免责声明:我对此特定情况没有经验。

由于@ngrx / effects处理副作用(因为reducers是纯粹的),因此可以让效果进行重定向。 我不确定这是否是正确的方法,但我认为重定向是副作用,因此可以在效果中处理。

另一种选择是使用防护来根据身份验证的结果处理重定向。