我想从数组中显示一定数量的项目,当用户单击例如“显示下一步”时,数组的下五个项目将是可见的,如项目6-10,其中项目0-5将被隐藏,例如,始终只有5个可见项。我怎么能这么做?
我尝试了下面的螺母,但没有成功(参见这里的JSFIDDLE )
class Cars extends React.Component{
constructor(){
super()
this.state = {
limit: 5,
cars: ["Audi", "Alfa Romeo", "BMW", "Citroen", "Dacia", "Ford", "Mercedes", "Peugeot", "Porsche", "VW"]
}
}
showPreviousCars() {
// show previous 5 items
}
showNextCars(){
this.setState({
limit: this.state.limit + 5
})
}
render(){
let cars = this.state.cars.slice(0,this.state.limit);
return(
<div className="car-wrapper">
<ul>
<li><a onClick={this.showPreviousCars.bind(this)}>Previous 5</a></li>
{cars.map((car, i) => {
return(
<li key={i}>{car}</li>
)
})}
<li><a onClick={this.showNextCars.bind(this)}>Next 5</a></li>
</ul>
</div>
)
}
}欢迎任何建议!
发布于 2018-01-23 15:49:37
您可以使用Array.prototype.slice (检查文档这里以知道要传递哪些参数)来处理数组的一部分:
cars.slice(this.state.limit, this.state.limit + 5).map(...)编辑:两件事:
slice(this.state.limit - 5, this.state.limit)showNextCars函数,以确保您不会超出数组范围。发布于 2018-01-23 15:52:12
使用偏移量和限制
class Cars extends React.Component{
constructor(props){
super(props)
this.state = {
limit: 5,
offset:0,
cars: ["Audi", "Alfa Romeo", "BMW", "Citroen", "Dacia", "Ford", "Mercedes", "Peugeot", "Porsche", "VW"]
}
}
showPreviousCars() {
// show previous 5 items
}
showNextCars(){
this.setState({
offset:this.state.limit
limit: this.state.limit + 5,
})
}
render(){
let cars = this.state.cars.slice(this.state.offset,this.state.limit);
return(
<div className="car-wrapper">
<ul>
<li><a onClick={this.showPreviousCars.bind(this)}>Previous 5</a></li>
{cars.map((car, i) => {
return(
<li key={i}>{car}</li>
)
})}
<li><a onClick={this.showNextCars.bind(this)}>Next 5</a></li>
</ul>
</div>
)
}
}https://stackoverflow.com/questions/48405643
复制相似问题