Где сделать вызов API и как структурировать действия - PullRequest
0 голосов
/ 06 февраля 2019

Я недавно начал мигрировать с ngrx на ngxs, и у меня возник вопрос о том, где мне следует размещать некоторые из моих вызовов.

В NGRX я бы создал 3 действия для каждого взаимодействия с API.Что-то вроде:

GetEntities - чтобы указать, что был сделан первоначальный вызов API, GetEntitiesSuccess - чтобы указать успешный возврат данных GetEntitiesFail - чтобы указать на неудачный возврат данных

Я бы создалэффект для отслеживания действия GetEntities, которое фактически вызвало API и обработало ответ, вызвав действия Success / Fail с полученной полезной нагрузкой.

В NGXS, я делаю вызов API из самого хранилища, когда происходит действие, или есть какой-то другой объект NGXS, который я должен использовать для обработки этих вызовов API, а затем обрабатывать действия так же, как я?сделал в ngrx (создавая несколько действий за вызов)?

1 Ответ

0 голосов
/ 07 февраля 2019

Большинство примеров, которые я видел, и то, как я их использовал, состоит в том, чтобы сделать вызов API из обработчика действия в состоянии, а затем, когда API вернется, немедленно исправит состояние.

Затем послевызов патча, вы можете отправить действие, чтобы указать успех / неудачу, если вам нужно.Примерно так:

@Action(GetSomeData)
loadData({ patchState, dispatch}: StateContext<MyDataModel>, {payload}: GetSomeData) {

   return this.myDataService.get(payload.id)
   .pipe(
      tap((data) => {
        patchState({ data: data});
        // optionally dispatch here
        dispatch(new GetDataSuccess());
      })
   ); 
}  

Этот вопрос также может быть полезен Ngxs - Действия / состояние для загрузки данных из бэкэнда

...