在地图函数 JavaScript React 中使用 useState 进行计算

ogt*_*gtm 1 javascript reactjs react-hooks

大家好,我有一个这样的数组:

[
 {
   "name": "test",
   "amount": 794.651786,
   "id": "60477897fd230655b337a1e6"
 },
 {
   "name": "test2",
   "amount": 10.80918,
   "id": "60477bfbfd230655b337a1e9"
 }
] 
Run Code Online (Sandbox Code Playgroud)

我不想计算每笔金额的总和。

我尝试使用这样的 useState 挂钩:

const [total, setTotal] = useState(Number);
array.map((item) => {

 setTotal(total + item.amount);

});
Run Code Online (Sandbox Code Playgroud)

但它似乎没有按预期工作。

jpe*_*erl 5

您可以使用reduce方法,请参阅文档。

setTotal(array.reduce((sum, item) => sum + item.amount, 0))
Run Code Online (Sandbox Code Playgroud)

我邀请您阅读此JavaScript: .forEach() 和 .map() 之间的差异。你不应该.map这样使用。对于此用例,请改用.forEach

  • 这比在循环中调用“setState”要好得多,但我仍然认为OP根本不应该在这里使用状态。 (2认同)