动作/效果UI通知后的ngrx/store

jho*_*jho 5 ngrx angular

我正在使用ngrx/store和ngrx/effects.

这是流程,

  1. 用户单击登录按钮
  2. 已分派登录操作
  3. $ effects执行http.post凭据登录
  4. 发送LOGIN_SUCCESS或LOGIN_FAILURE动作

问题:我想在执行操作后执行一些UI任务,例如,下拉模式,或显示错误消息的弹出窗口.

我如何订阅我的组件中的响应?

多谢你们.

Fil*_*auc 4

您的状态应该有一个标志来通知您的组件它应该执行某个操作。

像这样的东西:

状态:

const initialState: SomeState = {
    loggedIn: false,
    ...
};

export default function(state = initialState, action: Action): SomeState {
    switch (action.type) {
        case StateActions.LOGIN_SUCCESS:
            return Object.assign({}, state, {loggedIn: true});
            ...
Run Code Online (Sandbox Code Playgroud)

然后在您的组件中您订阅状态,如果loggedIn为 true,您知道您应该显示模式。

另一种方法是通过服务直接执行您的任务。

  • 在您的状态下,您创建一个“loading: boolean”参数,默认情况下为“false”。`USER_UPDATE` 操作将其设置为 true,那么您应该有一个 `USER_UPDATE_COMPLETE` 操作,该操作在更新完成后被调用(通过效果),并将 `loading` 设置回 false。您可以选择在您的减速器中创建一个访问函数并监听它,如下所示: `(state$: Observable<SomeState>) => state$.select(s => s.loading)` (2认同)