Как я могу получить предыдущее состояние в редуксе? - PullRequest
0 голосов
/ 28 января 2019

У меня возникли проблемы, когда я создавал простое приложение для погоды, использующее реагирование и избыточность.

У меня есть два редуктора.Один предназначен для добавления данных в массив, а другой - для удаления данных из массива с использованием метода find.

вот код:

// actions

// fetching weather api 

export const fetchWeather = term => {
  return async dispatch => {
    const res = await api.get(
      `/data/2.5/weather?q=${term}&APPID=132123123132`
    );
    dispatch({ type: "FETCH_WEATHER", payload: res.data });
  };
};

// delete a list that matches the selected id

export const listDelete = id => {
  return {
    type: "LIST_DELETE",
    paylod: id
  };
};

// reducers 

// reducer that put a new data into an array

const reducerIndex = (state = [], action) => {
  switch (action.type) {
    case "FETCH_WEATHER":
      return [...state, action.payload];
    default:
      return state;
  }
};

// reducer that deleting the data that id selected 

const reducerIndexDel = (state = [], action) => {
  switch (action.type) {
    case "LIST_DELETE":
      return state.find(city => city.id !== action.payload);
    default:
      return state;
  }
};

export default combineReducers({
  reducerIndex,
  reducerIndexDel
});

, как вы, возможно, знаете, браузер выдает мне сообщение об ошибке: «При заданном действии« LIST_DELETE »редуктор« reducerIndexDel »возвратил неопределенное значение.»

Я могу получить данные, которые хочу получить, но как сделать, чтобы reducerIndexDel мог распознавать предыдущее состояние?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Я думаю, что вы написали неправильное написание - "полезная нагрузка" в функции listDelete.

Вы пытаетесь получить доступ к action.payload, но там написано paylod в действии.

0 голосов
/ 28 января 2019

Просто используйте filter, чтобы получить штат, в котором нет города с идентификатором.

return state.filter(city => city.id !== action.payload)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...