element-ui分页标准使用方法

位置:首页 / 技术中心 / 杂项

杂项 Admin 2026-05-19 20:20:49 188

   <el-pagination

      background

      layout="total, prev, pager, next, jumper"

      :total="total"

      :page-size="queryParams.pageSize"

      :current-page="queryParams.pageNo"

      @current-change="handlePageChange"

      class="pagination"

    ></el-pagination>



    /** 页码变化处理 */

    handlePageChange(val) {

      this.queryParams.pageNo = val;

      this.getList();

    },



前端电脑端架构师


思考过程


# Element-UI el-pagination 分页组件标准使用方法

## 核心配置

```

<el-pagination

  background

  layout="total, prev, pager, next, 

  jumper"

  :total="total"                    

  <!-- 总记录数 -->

  :page-size="queryParams.pageSize" 

  <!-- 每页条数 -->

  :current-page="queryParams.

  pageNo"<!-- 当前页码 -->

  @current-change="handlePageChange"

  <!-- 页码变化事件 -->

></el-pagination>

```

## 关键方法

```

data() {

  return {

    queryParams: {

      pageNo: 1,    // 当前页码,初始

      值为1

      pageSize: 10, // 每页条数

    },

    tableData: [],  // 表格数据

    total: 0,       // 总记录数

  }

},

methods: {

  // 页码变化处理 - 核心方法

  handlePageChange(val) {

    this.queryParams.pageNo = 

    val;  // 先更新页码

    this.getList

    ();                 // 再查询数据

  },

  // 获取列表数据

  getList() {

    api.getList(this.queryParams).

    then(res => {

      this.tableData = res.data.

      list;

      this.total = res.data.total;

    });

  }

}

```

## 重要原则

### ❌ 错误方式

```

<!-- 不推荐:v-model 与 

@current-change 同时使用时,事件触发时 

v-model 尚未更新 -->

<el-pagination

  v-model="queryParams.pageNo"

  @current-change="getList"  <!-- 

  getList 读取的是旧值 -->

></el-pagination>

```

### ✅ 正确方式

```

<!-- 推荐:显式绑定 + 手动更新 -->

<el-pagination

  :current-page="queryParams.pageNo"

  @current-change="handlePageChange"

></el-pagination>

```

## 完整数据流

```

用户点击页码

    ↓

触发 @current-change(val)

    ↓

handlePageChange(val) 更新 

queryParams.pageNo

    ↓

调用 getList() 查询接口

    ↓

更新 tableData 和 total

    ↓

页面重新渲染

```

## 搜索/重置时的页码处理

```

// 搜索时重置页码为1

handleQuery() {

  this.queryParams.pageNo = 1;

  this.getList();

},

// 重置时恢复默认参数

resetQuery() {

  this.queryParams = {

    pageNo: 1,

    pageSize: 10,

    // 其他查询条件...

  };

  this.getList();

}

```

## 总结要点

1. 显式绑定优于 v-model :避免事件触发时序问题

2. 先更新再查询 :确保接口使用最新的分页参数

3. 初始值设置 : pageNo 初始化为 1 , pageSize 按需设置

4. 搜索重置 :操作后务必重置页码为 1

5. 响应式更新 :确保 queryParams 是响应式对象(在 data 中声明)

18455111359 扫描二维码