Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.05.2020, 18:25
Новичок на форуме
Отправить личное сообщение для mDrama Посмотреть профиль Найти все сообщения от mDrama
 
Регистрация: 10.05.2020
Сообщений: 1

Redux - статус выполнения API-запроса
Добрый день. Помогите разобраться со способом нормально устанавливать статус выполнения какого-нибудь асинхронного запроса (saga/thunk - не важно).

Во всех туториалах пишут, что у нас в редьюсерах в inital state должно быть что-то вроде loading/isloading и тд:


Код:
const INITIAL_STATE = {
  trendingGames: null,
  loading: false,
  error: null
}
Таким образом мы даем понять, что у нас что-то фечится или нет.

А потом в экшенах мы уже меняем этот статус:

Код:
    case TrendingActionTypes.FETCH_TRENDING_START:
      return {
        ...state,
        loading: true
      }
    case TrendingActionTypes.FETCH_TRENDING_SUCCESS:
      return {
        ...state,
        trendingGames: action.payload,
        loading: false,
        error: null
      }
Но если я потом забираю селектором это свойство в компоненту и пытаюсь проверять по ней, выполнился ли запрос, то я получаю ошибку.

Код:
      {
        loading ? null : allGames.map(game => <GamePreviewItem game={game} key={game.id} />)
      }
Ошибка дефолтная. Как будто я пытаюсь взаимодействовать с Null: TypeError: Cannot read property 'map' of null.

При этом если я буду проверять по наличию самих данных, то все будет норм.

Код:
      {
        allGames ? allGames.map(game => <GamePreviewItem game={game} key={game.id} />) : null
      }
Насколько я понимаю, при рендере компоненты и первоначальной проверки пропсов, loading забирается из редьюсера со своим изначальным значением (false), а потому компонента пытается мапить данные, которые еще не пришли и сразу выбивает ошибку. Это подтверждается еще и тем, что если изначальное значение в редьсюере у loading сделать true, то все будет работать нормально.

Но это нелогично, да и везде во всех примерах loading: false по дефолту. И я не понимаю, как это работает и почему не работает у меня.

Последний раз редактировалось mDrama, 10.05.2020 в 18:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить больше объектов после запроса на сервер через fetch API NeonMan AJAX и COMET 24 06.05.2019 19:22
APi Яндекс.Карт | Вставка данных из JSON запроса MasterDmx AJAX и COMET 1 10.11.2014 15:24
Статус выполнения запроса AJAX n1ko jQuery 6 08.03.2012 19:33
Время выполнения запроса Andrei jQuery 2 01.12.2010 11:32
Что происходит с символами во время выполнения запроса? Yazla Общие вопросы Javascript 4 11.12.2009 17:09