我的代码
https://codesandbox.io/s/focused-thompson-w7v9c2?file=/index.tsx
<Formik
initialValues={initialValues}
onSubmit={async (values) => {
await new Promise((r) => setTimeout(r, 500));
// alert(JSON.stringify(values, null, 2));
values.product.map((item, i: number) => {
let qty: number[] = [];
console.log(i + "-------qty------");
console.log(item.qty);
console.log(i + "-------price------");
console.log(item.price);
if (item.qty! && item.price!) {
qty[i] = item.qty * item.price;
console.log(qty);
}
const result = qty.reduce((sum, number) => {
return sum + number;
}, 0);
setSum(result)
console.log("-------result------");
console.log(result);
console.log("-------Sum------");
console.log(sum);
console.log("-------langth------");
console.log(i);
});
}}
>
我把价格和数量加到连续数组中。我需要price + qty
组合,但是结果数组[ undefined, 30]
或[undefined,undefined ,40]
当我把数据加到数组中时,我想记录在const [sum, setSum] = useState(0)
中
2条答案
按热度按时间wyyhbhjk1#
您将在每个迭代中为每个产品设置
sum
。您可能需要阅读以下内容:reduce和map。1rhkuytd2#
你的if条件是错误的.替换这个
用这个