@dfv123

Почему асинхронный запрос не выполняется?

1.Учусь обрабатывать асинхронные запросы, ловлю "items.map is not a function". В чем дело и как исправить? Мой код:
https://codesandbox.io/s/vj2m955q37
2. В догонку. Как сделать чтобы items, полученные с сервера, не перезаписывали items из initialState, а присоединялись к ним?
3. Когда и какой синтаксис стрелочных функций использовать?
export const fetchProductsBegin = () => ({
  type: FETCH_BEGIN
});

vs
export const fetchBegin = () => {
  return {
    type: "FETCH_BEGIN"
  };
}
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
1. Поправьте mapStateToProps:
const mapStateToProps = state => {
  return {
    items: state.items.items,
    error: state.items.error,
    loading: state.items.loading
  };
};

По-хорошему напишите селекторы.

2. Измените кейс FETCH_SUCCESS:
export function items(state = initialState, action) {
  const { type, payload } = action;

  switch (type) {

    // some code

    case "FETCH_SUCCESS":
      return { 
        ...state,
        items: [ ...state.items, ...payload.items ],
        loading: false,
      };

     // some code

  }
}


3. По возможности сокращенный вариант:
export const fetchProductsBegin = () => ({ type: FETCH_BEGIN });

const mapStateToProps = state => ({
  items: state.items.items,
  error: state.items.error,
  loading: state.items.loading,
});


https://codesandbox.io/s/jprm2omlr5
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы