首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJS如何始终只显示一定数量的数组项

ReactJS如何始终只显示一定数量的数组项
EN

Stack Overflow用户
提问于 2018-01-23 15:45:40
回答 2查看 4.2K关注 0票数 1

我想从数组中显示一定数量的项目,当用户单击例如“显示下一步”时,数组的下五个项目将是可见的,如项目6-10,其中项目0-5将被隐藏,例如,始终只有5个可见项。我怎么能这么做?

我尝试了下面的螺母,但没有成功(参见这里的JSFIDDLE )

代码语言:javascript
复制
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>
    )
  }
}

欢迎任何建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-23 15:49:37

您可以使用Array.prototype.slice (检查文档这里以知道要传递哪些参数)来处理数组的一部分:

代码语言:javascript
复制
cars.slice(this.state.limit, this.state.limit + 5).map(...)

编辑:两件事:

  • 我看到您使用极限作为上边界,所以要么更改它,要么使用slice(this.state.limit - 5, this.state.limit)
  • 您可能也需要更新您的showNextCars函数,以确保您不会超出数组范围。
票数 5
EN

Stack Overflow用户

发布于 2018-01-23 15:52:12

使用偏移量限制

代码语言:javascript
复制
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>
        )
      }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48405643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档