<template><div><el-table :data="tableData?.slice((currentPage - 1) * pageSize, currentPage * pageSize)" style="width: 100%"><el-table-column prop="date" label="Date" align="center"/><el-table-column prop="name" label="Name" align="center"/><el-table-column prop="address" label="Address" align="center"/></el-table><!-- 分页 --><div class="demo-pagination-block"><el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :page-sizes="[5, 10, 20, 50]"layout="total, sizes, prev, pager, next, jumper" :total="tableData?.length" /></div></div>
</template><script setup>
import { ref } from "vue";
// 默认页数
const currentPage = ref(1);
// 分页的默认数
const pageSize = ref(5);const tableData = ref([{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',}, {date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',}
]);</script>
<style scoped>
.demo-pagination-block+.demo-pagination-block {margin-top: 10px;
}.demo-pagination-block .demonstration {margin-bottom: 16px;
}.demo-pagination-block {padding: 15px;background-color: white;display: flex;justify-content: center;
}
</style>
-
tableData
:这是一个数组,它包含了所有的数据。
-
slice()
:这是 JavaScript 中数组的一个方法,它用于从原数组中提取一个新的子数组,原数组不受影响。slice()
方法接受两个参数:start
和 end
,分别表示切片的起始位置和结束位置(不包括 end
)。
-
(currentPage - 1) * pageSize
:这是计算分页起始位置的表达式。
currentPage
是当前页的页码。pageSize
是每一页显示的数据条数。(currentPage - 1) * pageSize
表示当前页应该从数组的哪个位置开始提取数据。例如,如果当前页是第 2 页,每页显示 10 条数据,那么起始位置就是 (2 - 1) * 10 = 10
,即从索引 10 开始提取数据。
-
currentPage * pageSize
:这是分页的结束位置。
- 它表示当前页的数据应该截取到数组中的哪个位置。例如,如果当前页是第 2 页,每页显示 10 条数据,那么结束位置就是
2 * 10 = 20
,即从索引 0 到索引 19 之间的数据。