使用setState更新两个数组元素

问题描述 投票:0回答:1

我有一个简单的用户列表

const [users, setUsers] = useState([
    { name: 'john', order: 0 },
    { name: 'mary', order: 1 },
    { name: 'Lou', order: 200 }
]);

我希望在同一操作中将order = 40设置为第一个元素,并将order = 12设置为第二个元素

setUsers(...users, ?, ?)
reactjs
1个回答
0
投票

这个想法是使用功能更新。 https://reactjs.org/docs/hooks-reference.html#functional-updates

setUsers(prevState => {
  let newState = [];
  for(let i = 0; i < prevState.length; i++){
     newState.push({...prevState[i], order: i === 0 ? 1 : i === 1 ? 0 : prevState[i].order});
  }

  return newState;
});
© www.soinside.com 2019 - 2024. All rights reserved.