@Pogran

Как изменить элемент в reducer?

У меня state вот в таком виде отображается prntscr.com/cc1tmc . Не могу понять как правильно поменять данные к примеру вот здесь prntscr.com/cc1tx7 . Учитывая что ключ первый(в данном случае 0) у меня в переменной $first, а ключ второй(в данном случае тоже 0) у меня в переменной $last . В самом reducer нужный элемент я получаю вот так state[action.key1][action.key2] . а вот как его правильно изменить в state не знаю
  • Вопрос задан
  • 389 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
DEMO.

const initalState = {
  foo: 'bar',
  baz: 'pew',
  structure: [
    ['', ''],
    ['', ''],
  ],
};

const reducer = (state, action) => {
  switch (action.type) {
    case 'ADD_INPUT':
      return {
        ...state,
        structure: state.structure.map((v1, k1) => {
          if (k1 === action.first) {
            return v1.map((v2, k2) => {
              if (k2 === action.second) {
                return action.value;
              } else {
                return v2;
              }
            });
          } else {
            return v1;
          }
        }),
      };
      break;

    default:
      return state;
  }
};

const newState = reducer(initalState, {
  type: 'ADD_INPUT',
  first: 0,
  last: 0,
  value: 'foo',
});

console.log(initalState);
console.log(newState);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы