如何使用地图将道具从 parent 传递给 child
How to pass props to child from parent with a map
我有一个 parent 组件,它使用地图渲染 child 具有一些数据的组件。我需要将数据作为道具传递给 child 组件,但是当我传递它们时,我无法在 child 组件中访问它们。 this.props.children prop 有我需要的 props 但有没有更好的方法将它们传递给 child 组件?
Parent分量
class Home extends Component {
renderArtCards = (artCardArray) => {
return (artCardArray.map((artCard, index) => {
return (
<div key={index}>
<ArtCard>
title={artCard.title}
image={artCard.image}
description={artCard.description}
price={artCard.price}
</ArtCard>
</div>
)
})
)
}
render() {
return (
<Fragment>
<div className="row no-gutters justify-content-end pageTitleRow">
<div className="pageTitle">Home</div>
</div>
<div className="artCardsRow">
<Masonry
className={'masonryStyle'}
options={masonryOptions}>
{this.renderArtCards(artCards)}
</Masonry>
</div>
</Fragment>
)
}
}
Child分量
class ArtCard extends Component {
render() {
console.log(this.props.children)
return (
<Fragment>
<Card className="artCardBody">
<CardMedia
className="artCardMedia"
image={this.props.image}
title={this.props.title}
/>
<CardContent>
<div className="row artCardTitleRow">
<div className="artCardTitle">{this.props.title}</div>
<div className="artCardPrice">Rs.{this.props.price}</div>
</div>
<div className="text-muted">{this.props.description}</div>
</CardContent>
</Card>
</Fragment>
)
}
}
我需要使用 this.props.xxxx
访问 child 组件中的道具
道具进入 内部 <Name ... >
。您目前没有向 <ArtCard>
传递任何道具,只是将文本作为其子项。
您的子组件不需要 class
,所以让我们这样做(哑组件):
const ArtCard = ({ image, title, price, description }) => (
return (
<Fragment>
<Card className="artCardBody">
<CardMedia
className="artCardMedia"
image={image}
title={title}
/>
<CardContent>
<div className="row artCardTitleRow">
<div className="artCardTitle">{title}</div>
<div className="artCardPrice">Rs.{price}</div>
</div>
<div className="text-muted">{description}</div>
</CardContent>
</Card>
</Fragment>
)
}
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
我有一个 parent 组件,它使用地图渲染 child 具有一些数据的组件。我需要将数据作为道具传递给 child 组件,但是当我传递它们时,我无法在 child 组件中访问它们。 this.props.children prop 有我需要的 props 但有没有更好的方法将它们传递给 child 组件?
Parent分量
class Home extends Component {
renderArtCards = (artCardArray) => {
return (artCardArray.map((artCard, index) => {
return (
<div key={index}>
<ArtCard>
title={artCard.title}
image={artCard.image}
description={artCard.description}
price={artCard.price}
</ArtCard>
</div>
)
})
)
}
render() {
return (
<Fragment>
<div className="row no-gutters justify-content-end pageTitleRow">
<div className="pageTitle">Home</div>
</div>
<div className="artCardsRow">
<Masonry
className={'masonryStyle'}
options={masonryOptions}>
{this.renderArtCards(artCards)}
</Masonry>
</div>
</Fragment>
)
}
}
Child分量
class ArtCard extends Component {
render() {
console.log(this.props.children)
return (
<Fragment>
<Card className="artCardBody">
<CardMedia
className="artCardMedia"
image={this.props.image}
title={this.props.title}
/>
<CardContent>
<div className="row artCardTitleRow">
<div className="artCardTitle">{this.props.title}</div>
<div className="artCardPrice">Rs.{this.props.price}</div>
</div>
<div className="text-muted">{this.props.description}</div>
</CardContent>
</Card>
</Fragment>
)
}
}
我需要使用 this.props.xxxx
访问 child 组件中的道具道具进入 内部 <Name ... >
。您目前没有向 <ArtCard>
传递任何道具,只是将文本作为其子项。
您的子组件不需要 class
,所以让我们这样做(哑组件):
const ArtCard = ({ image, title, price, description }) => (
return (
<Fragment>
<Card className="artCardBody">
<CardMedia
className="artCardMedia"
image={image}
title={title}
/>
<CardContent>
<div className="row artCardTitleRow">
<div className="artCardTitle">{title}</div>
<div className="artCardPrice">Rs.{price}</div>
</div>
<div className="text-muted">{description}</div>
</CardContent>
</Card>
</Fragment>
)
}
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>