ngrx: действие, которое не меняет состояние - PullRequest
0 голосов
/ 01 июня 2018

Я выполняю функцию (щелчок) в пользовательском интерфейсе, который выполняет вызов API.Если вызов не удался, я отправляю действие ngrx с сообщением об ошибке в полезной нагрузке.Я использую редуктор для хранения этой ошибки в состоянии.В пользовательском интерфейсе я показываю всплывающее окно всякий раз, когда ошибка в состоянии изменяется.Теперь, когда возвращаются два последовательных сообщения об ошибке, состояние обновляется дважды с одним и тем же значением.Так что, видимо, во второй раз состояние не меняется.Итак, я не получаю всплывающее окно для второго сообщения об ошибке.Но мне нужно получать всплывающее окно каждый раз, когда появляется сообщение об ошибке.

Возможно ли это без отправки НОВОГО действия, которое удалит сообщение об ошибке при подтверждении всплывающего окна.Я не хочу создавать новое действие только для очистки сообщения об ошибке в состоянии.

1 Ответ

0 голосов
/ 01 июня 2018

Самый простой подход, который я могу придумать, - это обернуть это ответное сообщение (я предполагаю, что это строковое значение) в интерфейсе.

Таким образом, всякий раз, когда вы фиксируете ошибку, вы создаете новый объект-оболочку в следующем порядке:чтобы проверка равенства для этого свойства состояния всегда была ложной.

Что-то вроде:

interface ErrorWrapper {
   message: string;
}

export const string ERROR = "[Error] Something just exploded";

class ErrorCapturedAction implements Action {
  readonly type = ERROR;
  constructor(public readonly payload: ErrorWrapper){}
}

export type Actions = ErrorCapturedAction;    

interface State {
   error: ErrorWrapper | null;
}


initialState: State = {error = null};

reducer(state = initialState, action: Actions): State {
  switch(action.type){
  ...
    case ERROR:
      const error = action.payload;
      return {...state, error};
  ...
  }
}
...