根据先前状态更改Redux中的状态

时间:2019-05-05 08:13:43

标签: reactjs redux

我在Redux上苦苦挣扎。

尽管我已根据教程设法将一些非常简单的状态迁移到Redux,但我发现很难处理更复杂的状态。尝试过研究,但答案却千差万别,令人困惑。

据我所知,setState等同于Redux的动作,应该通过使用getState()然后bt dispatch()将动作传递给reducer来实现...

如果是,那么如何将以下示例正确转换为Redux?

让我们说一下切换一些嵌套的音乐状态元素的布尔值:

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

2 个答案:

答案 0 :(得分:0)

在减速器中状态已通过

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

答案 1 :(得分:0)

与Redux中的示例代码等效的内容如下

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

这是关于变异状态。如果需要更高级的功能,可以使用不变性帮助程序。