• 使用javascript slice函数实现模拟分页


    在前端中有时需要自己写mock api, 数据库方面并不一定要用mysql这样的,用json文件同样也可以模拟数据库,使用require函数读取json文件获取到一个json对象/数组,下面介绍怎么使用slice函数进行模拟分页:

    分页时只需要这几个参数: 

    baseData: 待分页的数据(通常是一个数组,因为mysql的表就是线性的数据,本质就是数组)

    当前页码:pageNum

    每页显示条数:pageSize

    那么分页的核心代码如下

    1. // 计算总页数
    2. const totalPages = Math.ceil(baseData.length / pageSize);
    3. // 计算起始索引和结束索引
    4. const startIndex = (pageNumber - 1) * pageSize;
    5. const endIndex = Math.min(startIndex + pageSize, baseData.length);
    6. // 使用 slice 方法截取分页需要返回的数据
    7. queryPageInfo = baseData.slice(startIndex, endIndex);
    8. // 计算上一页和下一页
    9. const prevPage = pageNumber > 1 ? pageNumber - 1 : null;
    10. const nextPage = pageNumber < totalPages ? pageNumber + 1 : null;

    简单解释一下slice函数的用法:

    slice(start,end)==>表示截取数组: 起始索引:start, 结束索引:(end-1),这两段之间的数据

    之所以还需要计算prevPage(上一页)和nextPage(下一页), 是因为需要发给前端做分页按钮时的分页信息:

      paginationInfo = {

        prevPageLink,

        nextPageLink,

        totalCount: baseData.length,

        pageSize,

        currentPage: pageNumber,

        totalPages,

      };

    而计算prePageLink和nextPageLink 就需要prevPage和nextPage这两个参数

      const prePageLink = prevPage

        ? `${baseUrl}?pageNumber=${prevPage}&pageSize=${pageSize}`

        : null;

      const nextPageLink = nextPage

        ? `${baseUrl}?pageNumber=${nextPage}&pageSize=${pageSize}`

        : null;

     这个分页信息可以设置到response的header中,然后web端通过request读取header获取分页信息:

    res.header("x-pagination", JSON.stringify(paginationInfo))

  • 相关阅读:
    UE蓝图中Map的遍历
    适合自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》
    IMX6ULL —— 字符编码方式和实现
    四、MySQL 提权方式
    可复现的语言大模型推理性能指标
    CMU 15-445 Project 0 实现字典树
    Spark本地模式和集群模式安装配置
    [iOS开发]编译过程
    计及新能源出力不确定性的电气设备综合能源系统协同优化(Matlab代码实现)
    CSS 3之菜单的横竖转换
  • 原文地址:https://blog.csdn.net/jiaohuizhuang6019/article/details/133245089