2016-09-29 56 views
4

我正在使用ngrx/effects如何分配空行爲?

我該如何派遣空行動?

這是我怎麼現在做:

@Effect() foo$ = this.actions$ 
    .ofType(Actions.FOO) 
    .withLatestFrom(this.store, (action, state) => ({ action, state })) 
    .map(({ action, state }) => { 
     if (state.foo.isCool) { 
     return { type: Actions.BAR }; 
     } else { 
     return { type: 'NOT_EXIST' }; 
     } 
    }); 

由於我必須返回一個動作,我使用return { type: 'NOT_EXIST' };

有沒有更好的方法來做到這一點?

回答

5

我已經使用了類似的未知動作,但通常在還原器的單元測試環境中。

如果你不安的效果做同樣的,你可以使用mergeMapObservable.of()Observable.empty()而是有條件地發出一個動作:

@Effect() foo$ = this.actions$ 
    .ofType(ChatActions.FOO) 
    .withLatestFrom(this.store, (action, state) => ({ action, state })) 
    .mergeMap(({ action, state }) => { 
    if (state.foo.isCool) { 
     return Observable.of({ type: Actions.BAR }); 
    } else { 
     return Observable.empty(); 
    } 
    }); 
+0

感謝,這是一個很好的方式:) –