[英]Updating multiple array object values with useState in React
感觉我快要解决这个问题了,但不确定如何使用 useState 更新给定 object 数组中的所有值。 这是一个例子:
const [data, setData] = useState([
{key: 1,
value: 25},
{key: 2,
value: 30}
])
然后假设单击按钮我想将 10 添加到数组中每个项目的值:
const handleClick = () => {
const newData = data.map(item => item.value + 10)
setData ([
...data, ???
])
newData 提供了一个更新的数组,但我不确定如何使用 Hook 来更新 state。 谢谢!
您可以使用functional state updater
并返回映射结果。 另请注意,由于每个值都是 object,因此您必须仅克隆和更新值字段
const handleClick = () => {
setData (prevData => data.map(item => ({...item, value: item.value+10})));
}
用你的方式来说,就像
const handleClick = () => {
const newData = data.map(item => {
return {...item, value: item.value + 10}
});
setData(newData);
}
您应该将 setData 设置为 map 迭代的结果。 它应该是这样的:
const handleClick = () => {
const newData = data.map(item => item.value + 10)
setData(newData)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.