纯前端模拟后端接口异步获取数据

本文展示了如何在Vue中利用setTimeout模拟后端接口异步获取数据,实现在页面加载时延迟1秒加载表格数据。通过el-table组件展示姓名、年龄等信息,并结合el-pagination进行分页,提供了切换页码和每页显示条数的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现思路

通过 setTimeout() 延迟1s 给数据赋值来模拟后端接口异步获取数据

最终效果

在这里插入图片描述

完整代码

<template>
  <div class="mainBox">
    <el-table v-loading="loading" :data="tableData">
      <el-table-column prop="ID" label="编号" align="center"> </el-table-column>
      <el-table-column prop="name" label="姓名" align="center">
      </el-table-column>
      <el-table-column prop="age" label="年龄" align="center">
      </el-table-column>
    </el-table>
    <el-row type="flex" class="pageBanner" justify="center">
      <el-pagination
        background
        :total="total"
        :page-size="pageSize"
        @size-change="pageSizeChange"
        @current-change="currentPageChange"
        :current-page="currentPage"
        :page-sizes="pageSizes"
        layout="total, sizes, prev, pager, next, jumper"
      >
      </el-pagination>
    </el-row>
  </div>
</template>
<script>
export default {
  data() {
    return {
      loading: false,
      total: 0,
      pageSize: 3,
      pageSizes: [1, 2, 3, 5, 10],
      currentPage: 1,
      tableData: [],
    };
  },

  mounted() {
    // 页面初始化时,首次加载数据
    this.getData(this.currentPage, this.pageSize);
  },

  methods: {
    // 模拟访问接口获取数据
    getData(page, pageSize) {
      this.loading = true;
      setTimeout(
        () => {
          let data = [
            {
              ID: 1,
              name: "王小虎",
              age: 10,
            },
            {
              ID: 2,
              name: "张三",
              age: 20,
            },
            {
              ID: 3,
              name: "李四",
              age: 30,
            },
            {
              ID: 4,
              name: "何香",
              age: 18,
            },
            {
              ID: 5,
              name: "刘刀",
              age: 27,
            },
            {
              ID: 6,
              name: "关胜",
              age: 33,
            },
            {
              ID: 7,
              name: "齐巧",
              age: 55,
            },
            {
              ID: 8,
              name: "卢一方",
              age: 45,
            },
            {
              ID: 9,
              name: "王兴海",
              age: 66,
            },
            {
              ID: 10,
              name: "全德",
              age: 100,
            },
          ];

          this.total = data.length;
          let startIndex = pageSize * (page - 1);
          let endIndex = pageSize * page;
          this.tableData = data.slice(startIndex, endIndex);

          this.loading = false;
        },
        // 延迟1s后执行,模拟异步获取数据
        1000
      );
    },
    // 切换页码--翻页
    currentPageChange(newPage) {
      this.currentPage = newPage;
      this.getData(this.currentPage, this.pageSize);
    },
    // 切换每页显示条数
    pageSizeChange(newPageSize) {
      this.pageSize = newPageSize;
      this.getData(this.currentPage, this.pageSize);
    },
  },
};
</script>
<style  scoped>
.mainBox {
  margin: 30px;
}

.pageBanner {
  margin: 10px;
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值