【问题标题】:Ngrx: populate success dispatched actions on componentNgrx:在组件上填充成功调度的操作
【发布时间】:2017-03-30 20:01:14
【问题描述】:

我正在从我的组件中分派一个 ADD_SOURCE 操作,当它成功分派另一个 ADD_SOURCE_SUCCESS

this.store$
  .select(fromRoot.getUserState)
  .filter(user => user.id != null && user.logged)
  .takeUntil(this.componentDestroyed$)
  .do(user => this.store$.dispatch({type: 'ADD_SOURCE', payload: user.username}))
  .subscribe();

这是根据网络调用返回ADD_SOURCE_SUCCESS的效果:

@Effect({ dispatch: true })
  addSource$: Observable<Action> = this.actions$
    .ofType('ADD_SOURCE')
    .switchMap(
      (action: Action) =>
        this.userService.addCard(action.payload.username, action.payload.token)
          .map((card: CardDTO) => {
            return <Action>{
              type: 'ADD_SOURCE_SUCCESS',
              payload: <ICard>{ ... }
            };
          })
          .catch(_ => {
            return Observable.of(<Action>{ type: 'ADD_SOURCE_FAILED', payload: { }});
          }));

那么,一个新的ADD_SOURCE_SUCCESS 在我的reducer 上被调度:

private static saveSourceSuccess(sourcesRdx, type, payload) {
    return <ISourceRedux>{
        ids: [ ...sourcesRdx.ids, payload.id ],
        entities: Object.assign({}, sourcesRdx.entities, {[payload.id]: payload}),
        selectedIds: sourcesRdx.selectedIds,
        editingSource: null
    };
}

尽管如此,我不太明白如何在我的组件上说操作已成功并做一件事或另一件事......

有什么想法吗?

【问题讨论】:

    标签: ngrx


    【解决方案1】:

    在你的 reducer 中,你还应该处理成功和失败错误,使用错误消息或任何你需要的数据设置存储,并在其上创建一个选择器。然后用户界面应该订阅这个新的选择器,你会收到通知 检查本章 selectors

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2019-12-16
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      相关资源
      最近更新 更多