【发布时间】:2017-07-18 21:00:32
【问题描述】:
刚开始使用 react,经过多年的 jQuery,一些简单的事情可能会变得困难
我想呈现书籍列表,由于描述太长而无法显示,我想限制 div 的高度。 onClick 我想显示完整的描述文本,如果再次点击就关闭它。
像这样:https://jsfiddle.net/nb1u1f9t/
这是我呈现书籍列表的函数:
renderBooks(){
return(
<div>
<h3>List of available books</h3>
<ul className="list-group">
{this.props.books.map((book)=>{
return (
<li key={book.id} className="list-group-item">
<div className="cover-img"><img src={book.cover_img} alt="" className="img-responsive" /></div>
<div className="book-info">
<ul className="list-group">
<li className="list-group-item active"><h4>Name: {book.name} </h4></li>
<li className="list-group-item">Pages: {book.pages_i}</li>
<li className="list-group-item">Genre: {book.genre_s}</li>
<li className="list-group-item">Price: {book.price}</li>
<li className="list-group-item">Description: <div className="description-frame">{renderHTML(book.description)}</div><div className="view-all" onClick={}>View All</div></li>
</ul>
</div>
</li>
);
})}
</ul>
</div>
);
我很想知道如何以 React 风格实现这一点?我觉得应该有一些与状态有关的东西,但想不出如何正确地做到这一点。另外不确定如何通过点击事件处理特定书籍的上下文。
【问题讨论】:
-
React 解决这个问题的方法是切换 CSS 类。例如,假设您有一个
.closed类,它限制了描述的高度,然后添加一个onClick处理程序以在您单击描述时切换到.open类 - 类似于它在您的小提琴。看到这个:facebook.github.io/react/docs/handling-events.html -
谢谢你肯尼斯,你的链接和stackoverflow.com/questions/42630473/react-toggle-class-onclick 回答这个问题我能够做到这一点:) 虽然我必须进行描述并单击 div 作为单个组件,所以状态是分开的在每本书中
标签: reactjs