javascript - 如何将数据从映射对象传递到 React 中的父组件?
问题描述
我正在构建一个购物车应用程序,该应用程序将每个项目都包含为一个卡片组件。我通过映射一些虚拟对象数据来渲染这些卡片,如下所示:
const Home = () => {
const dummyData = [
{
id: 1,
title: 'tshirt',
price: 10
},
{
id: 2,
title: 'coat',
price: 20
}
]
const RenderCards = () => {
return (
dummyData.map(
(d) => {
return (
<Card key={d.id} title={d.title} price={d.price} handleAddToCart={handleAddToCart}/>
)
}
)
)
}
const handleAddToCart = () => {
// maybe access id and price here?
}
return (
<>
<RenderCards />
</>
)
}
和Card
正在渲染的组件:
const Card = ({id, title, price}) => {
return (
<>
<div key={id}>
<p>{title}</>
<p>{price}</>
<button onClick={handleAddToCart}>Add to cart</button>
</div>
</>
)
}
现在单击每张卡片中的按钮,我想将数据(卡片的 ID 和商品的价格)发送回父Home
组件。假设点击了第二张卡片,我想访问id
和price
in Home
。
编辑:
也许我没有说清楚,我想在handleAddToCart
功能中访问点击卡的价格和 id。
解决方案
您可以向下传递处理程序并让孩子将详细信息传递给它,如下所示:
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>
推荐阅读
- postgresql - 如何在 postgresql 中显示 6 的幂
- java - 方法进入第二次返回,导致错误输出
- javascript - VLC http 远程控制
- r - 使用 tidyverse 在 R 中对数据进行分组和嵌套会产生错误
- python - 将 lowerCamelCase 转换为 snake_case 的最佳方法
- drupal - 将带有作曲家的 drupal 8 迁移到另一台服务器
- java - Spring Data Rest 处理 AfterLinkSaveEvent
- python - 安装“node-red-contrib-zeromq”时出错
- git - 修补文件时在文件末尾拆分块
- wordpress - Wordpress/Woocommerce rest api 根据用户角色返回产品价格