Обновить весь элемент в массиве - redux - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь обновить один объект в массиве объектов с помощью избыточной диспетчеризации, я попробовал ответить на похожие вопросы, но, похоже, не могу заставить его работать. То, что я хочу сделать, - это когда действие приходит, оно должно искать элемент в массиве с той же датой, что и action.options.date, затем следует заменить этот элемент в массиве новым элементом actions.options.data[0], который является весь объект item.

const initialState = {
    isFetching: false,
    monthArray: [],
    searchOptions: {
        currentMonth: moment().format('YYYY-MM'),
        leeway: 1
    },
    availabilityOptions: {
        Early: -1,
        Late: -1,
        Day: -1,
        Twilight: -1,
        Night: -1
    }
};
case UPDATE_DAY_IN_MONTH_ARRAY:
  return Object.assign({}, state, {
    monthArray: state.monthArray.map(item => {
      if (formatDate(item.date) === formatDate(action.options.date)) {
        return action.options.data[0];
      }
    return item;
  })
});

Код действия: (Причина для данных: data [0], потому что возвращается массив объектов из mysql)

export const updateDayInMonthArray = (date, data) => {
    return {
        type: UPDATE_DAY_IN_MONTH_ARRAY,
        options: {
            date,
            data: data[0]
        }
    }
}

Диспетчерская акция

const updateDayInMonthArrayHandler = (date, data) => {
        dispatch(updateDayInMonthArray(date, data));
    }

1 Ответ

0 голосов
/ 04 мая 2020

Разобрался, и спасибо вам, ребята, за помощь. Это не была проблема React или Redux, на самом деле проблема была в том, что сервер узлов возвращал данные перед проверкой того, что было обновлено.

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