Как ожидать конкретного изменения c проп в реакт-редуксе - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь закодировать уведомление, которое появляется, когда вызов API был успешно выполнен для API. Я использую redux с thunk, чтобы сделать выборку, и она изменяет состояние свойства с именем loading на true / false и сообщение об ошибке на null / error в строковом формате. Как я мог сделать это?

1 Ответ

1 голос
/ 26 февраля 2020

Вам необходимо иметь дополнительное поле, которое сообщало бы компоненту о завершении выборки. Например, в вашем dispatch(fetchSuccess(...)), который устанавливает загрузку в false, вы можете добавить поле сообщения в один из редукторов :

...
switch(action.type){
   case FETCH_SUCCESS:
      return {...state, data: action.payload, loading: false, message: 'success'}
...
}

Это не имеет значения, что это такое , Если ваш API отправляет обратно statusCode: 200 успешный ответ, вы можете использовать его в качестве сообщения.

Другой альтернативой является создание селектора и отслеживание указанного c data: action.payload изменить.

PS: Если ваша обработка уведомлений осуществляется через отдельный редуктор, вы также можете сделать это:

...
try{
   dispatch(fetchLoading())
   ...
   const response = await axios.get(...)
   const data = response.data
   ...
   dispatch(fetchSuccess(data))
   disaptch(openNotification())
} catch(error){
   dispatch(fetchError(error.message))
}
...


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...