6

我正在使用ngrx/效果。我想根据foo商店中的状态调度不同的操作。

这就是我现在的做法:

 @Effect() foo1$ = this.updates$
    .whenAction(Actions.FOO)
    .filter(obj => !obj.state.product.foo)
    .map<string>(toPayload)
    .map(x => ({ type: Actions.BAR1, payload: { x }}));

  @Effect() foo2$ = this.updates$
    .whenAction(Actions.FOO)
    .filter(obj => obj.state.product.foo)
    .map<string>(toPayload)
    .map(x => ({ type: Actions.BAR2, payload: { x }}));

有没有办法在这篇文章partition中使用 RxJS 5 运算符,如, groupBy, if, ?我现在无法正确使用它。case

4

1 回答 1

6

有 2 个独立的效果源就可以了。否则让它变得简单:

@Effect() foo$ = this.updates$
    .whenAction(Actions.FOO)
    .map(({action, state}) => {
        if (state.product.foo) {
            return { type: Actions.CHAT_GET_MESSAGES2, payload: { action.payload }};
        } else {
            return { type: Actions.CHAT_GET_MESSAGES, payload: { action.payload }};
        }
    });
于 2016-09-02T19:25:34.637 回答