[英]Sending props in React Typescript
我试图将挂钩推车发送到另一个组件,我不明白您如何在 typescript 中发送道具。 我只是想在侧边栏组件中显示购物车数据。 提前致谢。
export type ItemType = {
id: number;
name: string;
price: number;
content: string;
image: string;
amount: number;
}
const Cardsitem = ({ id, name, image, content, price, amount }: ItemType) => {
const [cart, setCart]:any[] = useState([]);
const addToCart = (product: any) => {
setCart([...cart, {...product, name, price, amount: 1}]);
console.log(cart)
};
return (
<Card>
<CardInfo>
<img src={image}></img>
</CardInfo>
<CardOverview>
<span style={{ marginBottom: -5, fontSize: 20 }}>{name} </span>
<p style={{ fontSize: 15 }}>
{content} <br /> {price},-{" "}
</p>
<Button onClick={() => addToCart(product)}>Buy</Button>
</CardOverview>
</Card>
);
};
所以我试图将购物车 state 发送到另一个名为 sidebar.tsx 的组件。
const Sidebar = ({ show }: IProps) => {
return (
{...show ? <SidebarContainerActive>
// Want to display the cart products here
</SidebarContainerActive> : <SidebarContainer/>}
);
};
看起来您的问题是Sidebar
不是您通过useState
挂钩设置card
state 的组件的子项。
您只能将 props道具传递给孩子。 因此,您可以在这里做的一件事是将 state 向上提起。
因此,如果您的 App 结构当前可能如下所示,并且您的card
state 是在Card
组件中定义的(例如箭头所在的位置),则您无法方便地将card
state 传递给Sidebar
组件。
App.tsx
/ \
Home.tsx Sidebar.tsx
/
--> Card.tsx
但是如果你把你的const [cart, setCart]:any[] = useState([]);
state 进入层次结构的更高层(在此图中,例如App.tsx
我放箭头的位置),然后您可以将cart
道具向下传递给Card
组件以及Sidebar
组件:
--> App.tsx
/ \
Home.tsx Sidebar.tsx
/
Card.tsx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.