我试图在ngrx下设计一个auth机制,但我还没有绕过ngrx。
身份验证的工作方式如下:客户端输入他的电子邮件和密码,使用他的凭据向/ api / auth发出请求,如果凭据不正确,我们会收到错误,并且在登录表格。如果凭据正确,我们会收到用户对象,然后将用户重定向到主页。
以下是我的看法
因此,我所挣扎的部分是@Effect
何时收到回复。
我假设在我的商店中我有一个userReducer
,其中包含用户的状态。当来自api/auth
的响应是用户时,则会将操作SET_USER
分派给reducer以设置用户。但是,我不确定如何处理错误消息。
答案 0 :(得分:1)
您可以在效果中使用.catch
返回处理此方案的LOGIN_FAILED等操作。你肯定应该有一个reducer来处理这个场景,而不是在reducer中为SET_USER处理它。
我是否需要为每个表单添加一个reducer?
没有。如果您将状态设计为智能,则可以让同一个reducer处理多个错误消息。但是,返回的错误消息应设置为state,因此您可能应该有一个action + reducer来清除错误消息。
如何重定向登录成功?
免责声明:我对此特定情况没有经验。
由于@ngrx / effects处理副作用(因为reducers是纯粹的),因此可以让效果进行重定向。 我不确定这是否是正确的方法,但我认为重定向是副作用,因此可以在效果中处理。
另一种选择是使用防护来根据身份验证的结果处理重定向。