2017-03-16 2 views
6

Assez nouveau pour redux-observables, rxjs et observables. Je voulais savoir comment puis-je gérer une autre action, dire « ActionTwo » dans la même épopéeComment gérer plusieurs types d'actions dans une épopée? Y a-t-il des inconvénients à faire de même?

const Epic1 = (action$,store) => { 
return action$.ofType('ActionOne') 
.mergeMap((action) => { 
     return ajax({'method': 'GET', 'url': 'someUrl') 
     .map(response => resultActoin(action.userId, response.response)); 


     } 
); 
} 

Quelque chose comme

const Epic1 = (action$){ 
    if('ActionOne') make a API call. 
    if('ActionTwo') make some other API call. 
    else do nothing. 

} 

Répondre

12

Est-ce le même appel API? Si c'est le cas, ofType() accepte plus d'un type. Vous pouvez simplement faire action$.ofType('ActionOne', 'ActionTwo').

Si vous souhaitez faire une demande à une autre API/URL, je recommanderais de faire une autre épopée. Vous pouvez "fusionner" toutes vos épopées avec combineEpics voir: https://redux-observable.js.org/docs/basics/SettingUpTheMiddleware.html

+2

^^^ ceci. Il est presque toujours préférable d'avoir une épopée par tâche. – jayphelps

+0

Connaissait à propos de combineEpics, essayait de gérer plusieurs actions dans une épopée. Pouvez-vous nous éclairer sur les raisons pour lesquelles l'action épique/per est un bon design? Autre que pour la maintenabilité du code? –

+0

Il ne s'agit que de maintenance. Les raisons sont les mêmes, pourquoi vous avez plusieurs fichiers et modules. Il permet de dimensionner et de raisonner vos applications, sans aucun inconvénient. En outre, il facilite le refactoring et vous permet de créer des flux d'actions. –