【问题标题】:Handling form erros under ngrx & ngrx/effects在ngrx & ngrx/effects 下处理表单错误
【发布时间】:2017-10-21 17:27:33
【问题描述】:

我正在尝试在 ngrx 下设计一种身份验证机制,但我还没有完全理解 ngrx。

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

这是我的看法

所以我正在努力解决的部分是@Effect 收到响应的时间。

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

  • 我是否还需要为表单添加减速器?
  • 每个表格都需要减速器吗?在我看来,错误消息不是应用程序长期存在状态的一部分。它只是应该显示然后忘记的东西。
  • 如何在登录成功时重定向?

【问题讨论】:

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


【解决方案1】:

您可以在效果中使用.catch 来返回处理这种情况的 LOGIN_FAILED 之类的操作。您绝对应该有一个减速器来处理这种情况,而不是在 SET_USER 的减速器中处理它。

每个表单都需要一个 reducer 吗?

没有。如果你设计的 state 很聪明,你可以让同一个 reducer 处理多个错误消息。但是,返回的错误消息应该设置为 state,所以你可能应该有一个 action+reducer 来清除错误消息。

如何在登录成功时重定向?

免责声明:我对这种特殊情况没有经验。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    相关资源
    最近更新 更多