Добрый день. Помогите разобраться со способом нормально устанавливать статус выполнения какого-нибудь асинхронного запроса (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 по дефолту. И я не понимаю, как это работает и почему не работает у меня.