【发布时间】:2022-02-12 02:12:22
【问题描述】:
我对使用 React.useState() 更新元素感到困惑
我正在创建动态计算器,您可以在其中添加字段,因此我不能为每个类别的结果使用一个状态,因此我创建了一个包含类别 ID 的结果的对象,并且可以在其中添加类别。
let [results, setResults] = React.useState({});
然后每次用户添加产品时
for (const category of product.categories) {
results[category.id] = 0;
当我更新某个类别的结果时,它会被更新:
setResults(newResults => {
newResults[categoryId] = mult * sum * quantity;
return newResults;
})
但我在表格中的元素一直显示为零(初始值)<TableCell align="right"><p>{results[category.id]}</p></TableCell>
更新:这里是完整代码:https://pastebin.com/cbJzFC8t Page looks like this
【问题讨论】:
-
你能不能把代码显示得更难理解一点。
-
我怀疑问题是你必须完全创建新对象,因为 React 使用引用比较,
newResults没有区别。尝试将您的退货替换为:return { ...newResults }。如果可行,我会写出正确的答案并附上详细的解释。 -
刚刚替换为
return { ...newResults };。仍然没有元素更新