import “./styles.css”;
import React, { useState, useEffect } from ‘react’;
const Form = () => {
const [products, setProducts] = useState([]);
const [totalPrice, setTotalPrice] = useState(0);
const [modifyNumber, setModifyNumber] = useState(false);
const [inputNumberValue, setInputNumberValue] = useState(0);
// 使用useEffect钩子在组件加载时获取商品列表数据
useEffect(() => {
fetchData();
}, []);
// // 获取商品列表数据的函数
// const fetchData = async () => {
// // 调用API接口获取商品数据
// const response = await fetch(‘your-api-url’);
// const data = await response.json();
// setProducts(data);
// };
// 获取商品列表数据的函数
const fetchData = async () => {
// 调用API接口获取商品数据
const data = [{
id:0,
name:‘zhangsan’,
number:1 ,
price :11.00
},
{
id:1,
name:‘zhangsan’,
number:2 ,
price :13.00
}
]
setProducts(data);
};
// 更新商品数量并调用API接口更新单个商品的价格
const updateQuantity = async (index, quantity) => {
if(quantity>=0){
const updatedProducts = […products];
updatedProducts[index].number = quantity;
setProducts(updatedProducts);
// 调用API接口更新单个商品的价格
// const response = await fetch('your-price-api-url', {
// method: 'POST',
// body: JSON.stringify({ productId: updatedProducts[index].id, quantity }),
// });
// const data = await response.json();
// updatedProducts[index].price = data.price
// 更新商品的价格
updatedProducts[index].price = (Math.random()*100).toFixed(2)
setProducts(updatedProducts);
}
};
// 计算总价的函数
useEffect(() => {
let totalPrice = 0;
products.forEach((product) => {
if (product.selected) {
// totalPrice += product.price * product.number;
totalPrice += Number( product.price)
}
});
setTotalPrice(totalPrice);
}, [products]);
// // 修改inputnumber的值并统一修改表格商品的数量的处理函数
// const handleInputNumberChange = (value) => {
// setInputNumberValue(value);
// if (modifyNumber) {
// const updatedProducts = products.map((product) => ({
// …product,
// number: value,
// }));
// setProducts(updatedProducts);
// }
// };
// 修改inputnumber的值并统一修改表格商品的数量的处理函数
const handleInputNumberChange = async (value) => {
setInputNumberValue(value);
const updatedProducts = products.map((product) => ({
…product,
number: value,
}));
setProducts(updatedProducts);
// test1
// Promise.all(
// products.map(async (product) => {
// const response = await fetch(‘your-price-api-url’, {
// method: ‘POST’,
// body: JSON.stringify({ productId: product.id, quantity: product.number }),
// });
// const data = await response.json();
// return { id: product.id, price: data.price };
// })
// ).then((updatedPrices) => {
// const updatedProducts = products.map((product) => {
// const updatedPrice = updatedPrices.find((price) => price.id === product.id);
// return { …product, price: updatedPrice.price };
// });
// setProducts(updatedProducts);
// });
// // 创建一个Promise数组,用于存放所有商品的询价请求
// const pricePromises = updatedProducts.map((updatedProduct) =>
// fetch(‘your-price-api-url’, {
// method: ‘POST’,
// body: JSON.stringify({ productId: updatedProduct.id, quantity: updatedProduct.number }),
// }).then((response) => response.json())
// );
// // 执行所有的询价请求,并更新商品的价格
// // [{price:10}, {price:11}]
// const newPrices = await Promise.all(pricePromises);
// const updatedProductsWithPrice = updatedProducts.map((updatedProduct, index) => ({
// …updatedProduct,
// price: newPrices[index].price,
// }));
// setProducts(updatedProductsWithPrice);
// // Mock
// let newPrices = []
// for(let i = 0;i
// price:(Math.random()*100).toFixed(2)
// })
// }
// const updatedProductsWithPrice = updatedProducts.map((updatedProduct, index) => ({
// …updatedProduct,
// price: newPrices[index].price,
// }));
// setProducts(updatedProductsWithPrice);
};
return (
setModifyNumber(!modifyNumber);
}}
/>
{
modifyNumber&& handleInputNumberChange(e.target.value)} />
}
Name
Price
Number
Select
{products.map((product, index) => (
{product.name}
{product.price}
{product.number}
{
const updatedProducts = [...products];
updatedProducts[index].selected = !updatedProducts[index].selected;
setProducts(updatedProducts);
}}
/>
))}
Total Price: {totalPrice}
);
};
export default function App() {
return (