2 回答

TA貢獻1789條經驗 獲得超10個贊
您可以向下傳遞處理程序并讓孩子將詳細信息傳遞給它,如下所示:
items.map(item => <Item addToCart={addToCart} {...item} />)
const Item = ({ id, name, addToCart }) =>
<div>
{name}
<button onClick={() => addToCart(id)}>Add to Cart</button>
</div>
或者像這樣傳遞一個包含值的回調:
items.map(item => <Item addToCart={() => handleAddToCart(item.id)} {...item} />)
const Item = ({ id, name, addToCart }) =>
<div>
{name}
<button onClick={addToCart}>Add to Cart</button>
</div>

TA貢獻1828條經驗 獲得超13個贊
在<Home />組件中,首先您可以使用 as 引入一個新狀態useState:
const [selectedItem, setSelectedItem] = useState(null)
然后向下傳遞道具,setSelectedItem以便能夠在那里觸發:
<Card key={d.id} title={d.title} price={d.price} handleAddToCart={handleAddToCart}
setSelectedItem={setSelectedItem} />
然后在<Card />組件中用作:
const Card = ({id, title, price, setSelectedItem}) => {
return (
<>
<div key={id}>
<p>{title}</>
<p>{price}</>
<button onClick={() => {
handleAddToCart();
setSelectedItem({ id, title, price});
}}>Add to cart</button>
</div>
</>
)
}
+1 建議:
<Card />我會將一個屬性中的詳細信息傳遞給組件,如下所示:
<Card key={d.id}
data=xzq8fbi
handleAddToCart={handleAddToCart}
setSelectedItem={setSelectedItem} />
然后將內部解構為:
const Card = (props) => {
const { data, setSelectedItem, handleAddToCart } = props
const { id, title, price } = data
// more code
}
添加回答
舉報