reactjs - 如何使用 redux 更新状态中的 1 个项目?

标签 reactjs redux react-redux

我有一个 reducer 并尝试更新状态数组中的 1 项。它看起来像这样:

const players = (state = [{name:'John',nrGames:0,nrWins:0},{name:'Ed',nrGames:0,nrWins:0},{name:'Mark',nrGames:0,nrWins:0}], action) => {
    switch (action.type) {

        case 'ADD_PLAYER':
            return [...state,{name:action.name}]

        case 'ADD_WIN':
            return [...state, action.name == 'bla' ? {nrWins:10} : {} ]

        default:
            return state;
    }
};

export default players;

我试图弄清楚如何更改某个名称的 nrWins 属性。那么,当使用 name='John' 调度 ADD_WIN 时,如何仅更新 John 对象并将 nrWins 属性设置为 1,而不是状态中的其他对象?

最佳答案

您需要对玩家进行.map,当您找到操作所描述的玩家时,将创建一名具有更新获胜次数的新玩家。为了便于阅读,我创建了一个名为 incWinForPlayer 的函数。

const incWinForPlayer = (name) => (player) => {
  return player.name === name
    ? {...player, nrWins: player.nrWins + 1}
    : player
};

const players = (state, action) => {
  switch (action.type) {
    case 'ADD_PLAYER':
      return [...state, {name: action.name}]
    case 'ADD_WIN':
      return state.map(incWinForPlayer(action.name));
    default:
      return state;
  }
};

export default players;

关于reactjs - 如何使用 redux 更新状态中的 1 个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47851113/

相关文章:

reactjs - nextjs ie11 预期标识符

redux - 使用ViewModel时导航到新屏幕并传递redux存储状态

javascript - 在 Redux 中向字典添加键/值

reactjs - 使用 redux connect 与 React hooks

reactjs - 警告 : Unknown prop on <> tag. 从元素中删除此 Prop

javascript - React - 如何打开 PDF 文件作为 href 目标空白

javascript - 在 React 中显示/隐藏子组件

javascript - 使用 Connect 进行 mapStateToProps 和 mapDispatchToProps 时对 redux : still getting empty object for this. props 使用react

javascript - 整合 React-Semantic-UI 和 redux-form

javascript - Redux 中的选择器 - React 组件了解 redux 状态意味着什么?