удаленный вход в редуктор? - PullRequest
0 голосов
/ 12 марта 2019
export default async (state = INITIAL_STATE, action) => {
  switch (action.type) {
//... Many other cases
    CASE 'A':
    CASE 'B':
    CASE 'C':
    CASE 'D':
    CASE 'E':
    {
      //call http request for logging purpose
      return { ...state, isLoadingFlag: true };
    }
   //Yes there is default case
  }
}

У меня есть вышеуказанный редуктор, который делает isLoadingFlag истинным.Мне интересно, какой из них попадает в дело, поэтому я добавляю функцию удаленной регистрации в reducer.Но как ни странно, это на самом деле испортило состояние?потому что я не вижу своего флага загрузки, показывающего больше.

Я не понимаю, почему это произошло, потому что вся забота редуктора возвращает объект состояния, теоретически говоря, он должен работать, даже если мы добавим в него запрос удаленной сети, не так ли?

Дополнительная информация:

Причина вышеуказанной настройки заключается в том, что мой компьютер Mac не смог обнаружить телефон Huawei в режиме adb, поэтому я не смог выполнить отладку на определенном устройстве.

Ответы [ 4 ]

4 голосов
/ 12 марта 2019

Я думаю, вам нужно удалить async из вашей инициализации функции, потому что редукторы должны быть синхронизированы.В вашем случае редуктор возвращает обещание из-за async.

2 голосов
/ 12 марта 2019

Редуктор Redux должен быть чистой функцией, а не async.

Я думаю, что вы используете редуктор для неправильной цели. Reducer используется для описания того, как должно изменяться состояние приложения в зависимости от отправленного действия.

Для ведения удаленного ведения журнала используйте middleware или библиотеку асинхронной отправки, например redux-think или redux-saga.

0 голосов
/ 12 марта 2019

Функции редуктора должны быть чистыми функциями. Вы можете разрешить свои асинхронные операции в действиях и диспетчеризации или использовать промежуточное программное обеспечение Redux (redux-thunk) для обработки асинхронных операций.

Пожалуйста, обратитесь https://redux.js.org/basics/reducers

0 голосов
/ 12 марта 2019

На мой взгляд, вы должны использовать Redux-Sagas , и там вы можете определить 1 сагу, которая прослушивает все действия, или 1 сагу за каждое действие. Попробуй.

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