2017-11-11 7 views
0

私は、ユーザーが選択したタグに基づいて検索する検索コンポーネントがあります(Think Pocket)。ユーザーがすべてのタグを選択解除すると、検索の結果がnullになることがわかります。サーバーにアクセスする必要はありません。条件付きで副作用を実行するにはどうすればこの叙事詩をリファクタリングできますか?条件付きで副作用を送信する

const removeTagEpic = (action$: any, store: any) => 
    action$ 
    .ofType(types.REMOVE_SELECTED_TAG) 
    .map((action: any) => action.payload) 
    .mergeMap((tag: any) => { 
     //only do this is store.getState().tags > 0 
     ajax.getJSON(`https://api.github.com/users/dwaynelavon`) 
     .flatMap(response => 
      Observable.concat(
      Observable.of(actions.fetchingProfiles(true)), 
      Observable.of(actions.fetchProfilesFulfilled(profiles)), 
      Observable.of(actions.fetchingProfiles(false)) 
     ) 
     ) 
    }) 

答えて

1

filter演算子を使用して、そこにタグをチェックできませんか?

const removeTagEpic = (action$: any, store: any) => 
    action$ 
    .ofType(types.REMOVE_SELECTED_TAG) 
    .filter(_ => store.getState().tags > 0) 
    .map((action: any) => action.payload) 
    .mergeMap((tag: any) => { 
     ajax.getJSON(`https://api.github.com/users/dwaynelavon`) 
     .flatMap(response => 
      Observable.concat(
      Observable.of(actions.fetchingProfiles(true)), 
      Observable.of(actions.fetchProfilesFulfilled(profiles)), 
      Observable.of(actions.fetchingProfiles(false)) 
     ) 
     ) 
    }) 

条件が満たされない場合、types.REMOVE_SELECTED_TAGの送信元は送信されません。

https://www.learnrxjs.io/operators/filtering/filter.html

+0

ありがとうございました –

関連する問題