【发布时间】:2019-09-11 07:40:34
【问题描述】:
我有一个带有 Div 元素列表的反应应用程序来创建一些卡片。每张卡片都有“阅读更多”按钮来展开和折叠一个段落,每次鼠标点击我都会切换它。 我的问题是,对于每次点击,它会展开所有卡片中的段落,而不是我点击的卡片中的段落。所以我无法识别点击的(这张)卡片。
组件:
class BidCard extends Component {
constructor(props) {
super(props);
this.state = {
readMoreOpen: false,
}
}
readMore() {
this.setState({ readMoreOpen: !this.state.readMoreOpen })
}
render() {
const { articles } = this.props;
return (
articles.map(article => {
return (
<div className="projectCardRoot" key={article.id}>
<div className="projectCardMainLogin">
<div className="projectCardMiddle">
<p className={this.state.readMoreOpen ? 'openFullParagraph' : 'closeFullParagraph'} id="projectCardDesc">{article.description}</p>
<div className="cardReadMore desktopDiv" onClick={this.readMore.bind(this)}>Read more</div>
</div>
</div>
</div>
)
})
)
}
}
export default BidCard;
我该如何解决这个问题?
【问题讨论】:
-
可以同时展开多少张卡片?
-
也许使用另一个只有 1 张卡的组件。所以你有这个组件
BidCards和articles.map(article => { return ( <div className="projectCardRoot" key={article.id}> <BidCard props here /></div>)})内部,并将 readMoreOpen 方法作为道具传递。并且不要为每张卡使用相同的 ID。您可以为 1 张卡制作const组件。不是类组件。 -
@RohanAgarwal 只有一张卡
-
然后,不是将关闭/打开卡片的逻辑保留在 BidCard 组件中,而是将其保留在父组件之外,并从那里控制它。
标签: javascript html css reactjs