Я работаю над приложением, и мне нужно реализовать функцию show more / less. Я наткнулся на следующий код:
constructor() {
super()
this.state = {
cars: [
{ "name" : "Audi", "country" : "Germany"},
{ "name" : "BMW", "country" : "Germany" },
{ "name" : "Chevrolet", "country" : "USA" },
{ "name" : "Citroen", "country" : "France" },
{ "name" : "Hyundai", "country" : "South Korea" },
{ "name" : "Mercedes-Benz", "country" : "Germany" },
{ "name" : "Renault", "country" : "France" },
{ "name" : "Seat", "country" : "Spain" },
],
itemsToShow: 3,
expanded: false
}
this.showMore = this.showMore.bind(this);
}
showMore() {
this.state.itemsToShow === 3 ? (
this.setState({ itemsToShow: this.state.cars.length, expanded: true })
) : (
this.setState({ itemsToShow: 3, expanded: false })
)
}
render() {
return <div>
<h3>Click show more to see more data</h3>
<div className="row">
<h3>List of Cars</h3>
<div className="container">
{this.state.cars.slice(0, this.state.itemsToShow).map((car, i) =>
<div className="box" key={i}>{car.name} - {car.country}</div>
)}
</div>
</div>
<p>
<button style={{width: '100%'}}onClick={this.showMore}>
{this.state.expanded ? (
<span>Show less</span>
) : (
<span>Show more</span>
)
}
</button>.
</p>
</div>;
}
}
https://jsfiddle.net/vkpati20/3a18og9t/23
Прямо сейчас я показываю больше и показываю меньше функциональности в зависимости от количества div (в настоящее время показывает 3 изначально). Но когда мы увеличиваем размер экрана дисплея, он показывает только 3 блока, а после них остается много белого пространства. Кроме того, когда мы уменьшаем размер экрана дисплея (чтобы отображать только 2 в строке), мы видим, что снова есть пустое пространство, которое может быть занято.
Таким образом, вместо того, чтобы показывать больше и показывать меньше, зависит от # отображаемых блоков, как сделать так, чтобы отображалось больше и меньше отображалось в зависимости от количества отображаемых строк?
Пример: я хочу, чтобы окна всегда занимали 1-ю строку на всех размерах экрана и скрывали остальные поля.