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 18:06:05 浏览: 175
这是一个 React 函数组件,主要功能是将顾客的订单信息提交到远程服务器,以完成下单操作。它接受三个 props 参数:orders 是一个数组,包含所有订单的信息;placeOrder 是一个函数,用于在提交订单后更新页面中的订单列表;doDone 是一个函数,表示下单操作已完成。
组件内部使用了 React 的 useState 钩子函数来维护两个状态:name 和 phone,它们分别代表顾客的姓名和电话号码。在用户输入姓名和电话号码时,这两个状态也会随之更新。当用户点击“Place Order”按钮时,handlePlaceOrder 函数会被调用。它首先遍历所有订单,将它们的 iditem 属性存入一个数组 ids 中。然后通过 fetch 函数将订单信息打包成 JSON 格式的数据,并以 POST 请求的方式发送到远程服务器。在服务器返回响应后,showConfirm 函数会被调用,用于显示下单成功的提示信息。最后,doDone 函数会被调用,表示下单操作已完成。整个组件的渲染结果是一个包含输入框和“Place Order”按钮的 div 元素。
阅读全文