使用vue3+<script setup>+element-plus中el-table前端切片完成分页效果
2024-01-07 17:40:26
<template>
<div>
<el-table :data="visibleData" :row-key="row => row.id">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="email" label="邮箱"></el-table-column>
</el-table>
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
:total="total"
></el-pagination>
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue';
const tableData = reactive([]);
const visibleData = reactive([]);
const currentPage = ref(1); // 当前页码
const pageSize = 10; // 每页显示的数据数量
const total = ref(0); // 总数据量
const loadData = () => {
// 模拟异步请求数据
setTimeout(() => {
// 假设从后端获取到的数据为 response
const response = {
data: [], // 当前页的数据
total: 100 // 总数据量
};
tableData.splice(0, tableData.length, ...response.data);
total.value = response.total;
updateVisibleData();
}, 1000);
};
const updateVisibleData = () => {
const start = (currentPage.value - 1) * pageSize;
const end = currentPage.value * pageSize;
visibleData.splice(0, visibleData.length, ...tableData.slice(start, end));
};
const handleCurrentChange = (page) => {
currentPage.value = page;
updateVisibleData();
};
onMounted(loadData);
</script>
在上面的示例中,我们使用了?<script setup>
?语法来编写组件逻辑。通过?import
?引入所需的函数和变量,然后在?<script setup>
?中直接使用它们。
在?onMounted
?钩子函数中,我们调用?loadData
?方法来加载初始数据。
在?handleCurrentChange
?方法中,我们更新?currentPage
?的值,并调用?updateVisibleData
?方法来更新可见数据。
通过这样的实现,你可以在前端完成分页效果,并根据当前页码和每页显示的数据数量来展示对应的数据。
文章来源:https://blog.csdn.net/m0_59642018/article/details/135400422
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!