function PlaceOrder({ orders, placeOrder , doDone }) { const [name, setName] = useState(''); const [phone, setPhone] = useState(''); const handlePlaceOrder = () => { const ids = []; for (let n = 0; n < orders.length; n++) { ids.push(orders[n].iditem); } const nameField = document.getElementById('name'); const phoneField = document.getElementById('phone'); const toPost = { customer: nameField.value, phone: phoneField.value, items: ids }; fetch('https://cmsc106.net/cafe/purchase', { method: 'POST', body: JSON.stringify(toPost), headers: { 'Content-type': 'application/json; charset=UTF-8' } }) .then(response => response.json()) .then(response => showConfirm(response)); doDone(); }; return ( <div> <input type="text" placeholder="Name" value={name} onChange={e => setName(e.target.value)} /> <input type="text" placeholder="Phone" value={phone} onChange={e => setPhone(e.target.value)} /> <button onClick={handlePlaceOrder}>Place Order</button> </div> ); }
时间: 2023-06-25 13:06:08 浏览: 100
c#.net中const和readonly的区别
这段代码是一个 React 组件,用于渲染一个表单,收集顾客的姓名和电话号码,以及他们想要购买的商品信息,然后将这些信息通过 HTTP POST 请求发送到指定的接口地址。
具体来说,这个组件接受三个 props:
- `orders`: 一个包含顾客想要购买的商品信息的数组。
- `placeOrder`: 一个函数,用于在订单提交成功后显示确认信息。
- `doDone`: 一个函数,用于在订单提交成功后将订单清空。
组件内部使用了 useState 钩子来维护表单输入框的值,其中 `name` 和 `phone` 分别表示顾客的姓名和电话号码。
`handlePlaceOrder` 函数被绑定到提交订单按钮的点击事件上。它首先从 `orders` 数组中提取出所有商品的 ID,然后将顾客的姓名、电话号码和商品 ID 组成一个对象 `toPost`。接下来,使用 fetch API 发送一个 HTTP POST 请求到指定的接口地址,将 `toPost` 对象作为请求体。请求头中包含了 Content-type 为 application/json 的信息。
请求发送成功后,使用 response.json() 方法将响应体解析为 JSON 格式,然后将解析后的结果传递给 `showConfirm` 函数,用于显示确认信息。最后,调用 `doDone` 函数将订单清空。
阅读全文