Изменение состояния в Redux на основе предыдущего состояния - PullRequest
0 голосов
/ 05 мая 2019

Я немного борюсь с Redux.

Хотя мне удалось переместить некоторые очень простые состояния в Redux на основе учебных пособий, мне трудно иметь дело с более сложными. Пробовал исследования, но ответы разные и запутанные.

Насколько я понимаю, эквивалент setState лежит в действиях Redux и должен быть достигнут с помощью getState (), а затем bt dispatch (), выполняя действие to reducer ...

Если да, то как правильно перевести приведенный ниже пример в Redux?

Допустим, переключение логического элемента некоторого вложенного элемента состояния музыки:

  this.setState(prevState => {
    const updatedMusic = prevState.music;
    const elToUpdate = updatedMusic.musicStateItemList[3].favClicked;
    elToUpdate = !elToUpdate;
    return {
      music: updatedMusic
    };
  });

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

эквивалент с вашим примером кода в Redux, как показано ниже

const updatedMusic = state.music;
const elToUpdate = updatedMusic.musicStateItemList[3].favClicked;
updatedMusic.musicStateItemList[3].favClicked = !elToUpdate;
return {
  ...state,
  music: [...updatedMusic]
};

речь идет о мутировавшем состоянии. Вы можете использовать помощник по неизменяемости, если хотите более продвинутый.

0 голосов
/ 05 мая 2019

В редукторе передается состояние

function counter(state = 0, action) {
  switch (action.type) {
    case 'INCREMENT':
      return state + 1
    case 'DECREMENT':
      return state - 1
    default:
      return state
  }
}

let store = createStore(counter)

Из документов: https://redux.js.org/introduction/getting-started

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