【发布时间】:2020-11-13 21:24:53
【问题描述】:
我已经像这样设置了我的初始状态对象:
const [Item,SetItem] = useState(
{
description: "Chicken",
foodNutrients:[
{nutrientName: "Protein", nutrientNumber: "203", value: 10},
{nutrientName: "Fat", nutrientNumber: "204", value: 15},
{nutrientName: "Carbs", nutrientNumber: "205", value: 20}
]
}
)
我想通过循环遍历 foodNutrient 数组并将按钮单击时的值加倍来修改现有对象,然后将更新后的对象存储在 useState 挂钩中。
const Double = e => {
SetItem(Item.foodNutrients.forEach(foodNutrient => foodNutrient.value *= 2))
console.log(Item)
}
当我第一次尝试单击<button onClick={Double}>Set state</button> 时,它会将正确的结果记录到控制台,但第二次它会抛出Cannot read property 'foodNutrients' of undefined,我无法渲染任何内容。
【问题讨论】:
-
React 状态通常被认为是不可变的,在
useState钩子的情况下它应该是不可变的。这意味着当状态改变时应该有一个新对象
标签: javascript arrays reactjs react-hooks