如果我的热门搜索刚好是45条数据,第五页也会报错

来源:7-14 热门搜索换页功能实现

不知不觉19

2019-01-10

if (jsList.length) {
    for (let i = (page-1)*10; i < page * 10; i++) {
        if (jsList[i]) {
            pageList.push(<SearchInfoItem key={jsList[i]}>{jsList[i]}</SearchInfoItem>)
        }
    }
}

如果我的热门搜索刚好是45条数据,第五页也会报错,因为第五页只有五条数据,后面的五条都是undefined,需要按照以上判断修改代码。
问题已修复。

写回答

5回答

wssjgj

2019-06-23

for (let i=(page-1) * 10; i< ((page*10>newList.length)?(Math.min(page * 10,newList.length)):(page * 10)); i++){
    pageList.push(
        <SearchInfoItem key={newList[i]}>{newList[i]}</SearchInfoItem>
    )
}

可以这样判断一下就好了吧

1
1
藏狐杰尼
math.min 的意义在哪里 直接用newList.length不就可以了吗
2019-07-04
共1条回复

用户1106094

2019-10-12

其实这个判断直接放在 for 循环里面就可以了呀, 包括 key 值报错问题也顺带一起解决了.

for (let i = (page - 1) * 10; 
    i < page * 10 && i < jsList.length; 
    i++) {
  pageList
      .push(
          <SearchInfoItem key={jsList[i]}>
              {jsList[i]}
          </SearchInfoItem>
      )
}


0
0

liyuankunkun

2019-06-14

if ( page*10 < newList.length ){

    for(let i = (page-1)*10 ; i < page *10 ; i++){

       pageList.push(

         <SearchInfoItem key={newList[i]}>{newList[i]}</SearchInfoItem>

       )

    }

  }else {

      for(let i = (page-1)*10 ; i < newList.length; i++){

        pageList.push(

          <SearchInfoItem key={newList[i]}>{newList[i]}</SearchInfoItem>

        )

      }

    }


0
0

Mr李小帅

2019-01-25

`

for (let i = (page-1) * 10; i < page * 10; i++) {

                if(newList[i]){

                    pageList.push(

                        <SeacrchInfoItem key={newList[i]}>{newList[i]}</SeacrchInfoItem>

                    )

                }

            }

`

我是外层加了一个判断,虽然不太美观,但是实用啊

0
1
Mr李小帅
不好意思,没注意看问题。。。
2019-01-25
共1条回复

qq_依云弄影_0

2019-01-18

可以把 内侧的 if 的条件改下

 if (i < newList.length) 

你在试试看

0
0

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程