reactjs - 如何根据 id 渲染产品
问题描述
我有一个由 3 个组件组成的页面。呈现在一个页面中。这个应用程序是供服务员获取订单的。除了订单列表之外,我做了所有事情。当用户将食物添加到购物车时,它会添加到 Check.jsx 组件中,一切都很好.但我需要它来处理多个订单。例如,当服务员点击订购一个时,Check.jsx 应该只根据订单 ID 显示产品。我将useCart 库用于 Check.jsx 侧边栏:
function ResponsiveDrawer() {
const { emptyCart } = useCart();
const clicker = () => {
emptyCart()
};
const height = window.innerHeight + "px"
return (
<motion.div
initial={{ x: -160 }}
animate={{ x: 0 }}
transition={{ delay: 0.2, type: "tween", stiffness: 50, duration: 0.5 }}
style={{ height: height }}
className="sidebar" >
{
['1', '2', '3', '4', '5', '6', '7', '8'].map((text, index) => (
<div className="list-item" onClick={() => {
localStorage.setItem('id', index);
clicker()
}} key={index}>
<Card name={text} colorIndex={index} />
</div>
))
}
</motion.div >
);
}
export default ResponsiveDrawer;
内容:
const [cart, setCart] = useState([]);
const [data, setData] = useState("")
const [id, setID] = useState()
useEffect(() => {
}, [])
const { addItem } = useCart();
const container = {
hidden: { opacity: 0 },
show: {
initial: {
opacity: 0,
},
opacity: 1,
transition: {
duration: 0.6,
}
}
}
const item = {
hidden: { opacity: 0 },
show: { opacity: 1 },
}
useEffect(() => {
(async function () {
let { data: tempData } = await axios.get("http://localhost:4000/data");
setData(tempData)
})()
}, [])
let keys = Object.keys(data)
useEffect(() => {
}, [cart])
const handlePlus = (obj) => {
setCart([...cart, obj])
}
return (
<div style={{ display: "flex", gap: "20px", marginTop: "20px" }}>
{
keys.map((key, indx) => (
<div key={indx} className="mywrapper">
<p className="cotegory">{key}</p>
<Divider />
{data[key].map(({ _id: id, ...obj }) => (
<motion.div className='products'>
<img src={placeholder} alt="x" />
<div><p className="firstName">{obj.name}</p>
<p className="secondName">{obj.price} </p></div>
<motion.button
whileTap={{ scale: 1.1 }}
className="plus" onClick={() => {
let tempObj = {
id: id,
name: obj.name,
price: obj.price,
orderID: localStorage.getItem('id')
}
addItem(tempObj)
}
}
>+ </motion.button>
</motion.div>
))}
</div>
))
}
</div >
)
}
export default Content
并检查所选订单放置的js。它用作购物车:
function Check() {
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
duration: 1.5
}
}
}
const itemss = {
hidden: { opacity: 0 },
show: { opacity: 1 }
}
const {
totalUniqueItems,
items,
updateItemQuantity,
} = useCart();
return (
<div>
<motion.div
className="mywrapper"
variants={container}
initial="hidden"
animate="show"
style={{}}
>
<p style={{ fontSize: "24px", marginBottom: '0px' }}> Check list </p>
<Divider style={{ background: "blue" }} />
{items.map((item) => (
<div key={item.id} className="">
<motion.div className='products'>
<div><p className="firstName">{item.name}</p>
<p className="secondName">{item.price * item.quantity} </p>
</div>
<div className="productss">
<motion.button
whileTap={{ scale: 1.1 }}
className="plus"
onClick={() => updateItemQuantity(item.id, item.quantity + 1)}
>+ </motion.button>
<p className="quan">{item.quantity}</p>
<motion.button
whileTap={{ scale: 1.1 }}
className="pluss"
onClick={() => updateItemQuantity(item.id, item.quantity - 1)}
>- </motion.button>
</div>
</motion.div>
</div>
))}
</motion.div>
</div >
)
}
export default Check
不知何故,我需要根据订单页面呈现产品。例如,如果用户单击订单 2,则应显示与其相关的内容。我使用useCart 库
解决方案
推荐阅读
- c# - 如何在 C# 中使用 Google Protobuf 创建 FieldMask 对象?
- rest - 失眠:如何在“非”json access_token 上使用模板
- java - Androidx Guideline 无法转换为 ViewGroup
- php - 当某些子类不需要在PHP中的抽象类中执行方法时如何改进代码
- python - 从 Python 2 切换到 Python 3 时使用 CFFI 的分段错误
- google-apps-script - UrlFetchApp 函数不适用于数组
- typescript - StyleSheet 对象类型?
- telethon - 如何使用 Telethon 下载电报动画贴纸
- xml - 无法导出gpx和kml文件,laravel
- android - 如何为在 Android 上的 Google Chrome 上查看的网页覆盖 React JS 上的“暗模式”?