template el-pagination size-change=handleSizeChange current-change=handleCurrentChange current-page=currentPage page-sizes=10 20 30 40 page-si
页面初始化加载两次的原因可能是因为组件的更新导致了重新渲染。当页面重新渲染时,Vue会重新执行组件的setup函数,从而导致初始化数据和调用fetchData函数两次。
为了解决这个问题,可以在setup函数中添加一个标志位,判断是否已经初始化过数据,如果已经初始化过,则不再执行fetchData函数。
修改后的代码如下:
<script lang="ts" setup>
const currentPage = ref(1); // 当前页码
const pageSize = ref(5); // 每页显示的条数
const total = ref(0); // 总条数
const initialized = ref(false); // 初始化标志位
// 监听页码改变事件
const handleCurrentChange = (val) => {
currentPage.value = val;
fetchData();
};
// 监听每页条数改变事件
const handleSizeChange = (val) => {
pageSize.value = val;
fetchData();
};
// 根据当前页码和每页显示条数获取数据
const fetchData = () => {
axios({
method: 'POST',
url: '/api/teamSelectAll',
data: {
...formInline.value,
page: currentPage.value,
limit: pageSize.value,
},
}).then((response) => {
if (response.data.flag) {
alert("查询成功");
Date1.value = response.data.data;
total.value = response.data.total;
} else {
alert(response.data.message);
}
}).catch((error) => {
console.error('发生错误:', error);
});
};
// 初始化页面数据
onMounted(() => {
if (!initialized.value) {
fetchData();
initialized.value = true;
}
});
const handleClick = () => {
currentPage.value = 1; // 重置当前页码为第一页
fetchData();
};
// 其他代码...
</script>
通过添加initialized标志位,可以保证页面初始化时只执行一次fetchData函数,解决页面加载两次的问题
原文地址: https://www.cveoy.top/t/topic/iQDN 著作权归作者所有。请勿转载和采集!