页面初始化加载两次的原因可能是因为组件的更新导致了重新渲染。当页面重新渲染时,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函数,解决页面加载两次的问题

template el-pagination size-change=handleSizeChange current-change=handleCurrentChange current-page=currentPage page-sizes=10 20 30 40 page-si

原文地址: https://www.cveoy.top/t/topic/iQDN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录