获取用户列表数据并渲染

获取用户列表数据

创建用户列表组件时就获取数据,在create中定义getUserList,method中实现方法,获取用户列表的参数对象在data中定义,将获取的数据保存在data定义的userlist和total中

export default {
  // 当前组件私有数据
  data() {
    return {
      // 获取用户列表的参数对象
      queryInfo: {
        query: "",
        pagenum: "1",
        pagesize: "2",
      },
      userlist: [],
      total: 0,
    };
  },
  // 生命周期函数
  created() {
    this.getUserList();
  },
  // 事件处理函数
  methods: {
    async getUserList() {
      const { data: res } = await this.$http.get("users", {
        params: this.queryInfo,
      });
      if (res.meta.status !== 200)
        return this.$message.error("获取用户列表失败! ");
      this.userlist = res.data.users;
      this.total = res.data.total;
      console.log(res);
    },
  },
};

渲染用户列表数据

在页面结构中加入Table结构
当el-table元素中注入data对象el-table-column数组后,在中用prop属性来对应对象中的键名即可填入数据,用label属性来定义表格的列名。可以使用width属性来定义列宽。

 <!-- 用户列表区域 -->
      <!-- 带边框表格用border属性stripe属性可以创建带斑马纹(隔行变色)的表格, -->
      <el-table :data="userlist" border stripe>
        <el-table-column prop="username" label="姓名"> </el-table-column>
        <el-table-column prop="email" label="邮箱"> </el-table-column>
        <el-table-column prop="mobile" label="电话"> </el-table-column>
        <el-table-column prop="role_name" label="角色"> </el-table-column>
        <el-table-column prop="mg_state" label="状态"> </el-table-column>
        <el-table-column label="操作"> </el-table-column>
      </el-table>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单的示例。 首先,你需要在项目中安装 Vue 3、TypeScript 和 Vite,可以使用以下命令: ``` npm install vue@next vue-router@next @types/vue @types/vue-router -S npm install vite -D ``` 接着,在 src 目录下创建一个 components 目录,用于存放组件。在 components 目录下创建一个名为 Table.vue 的文件,用于渲染表格。示例代码如下: ```vue <template> <table> <thead> <tr> <th v-for="column in columns" :key="column.field">{{ column.title }}</th> </tr> </thead> <tbody> <tr v-for="item in items" :key="item.id"> <td v-for="column in columns" :key="column.field">{{ item[column.field] }}</td> </tr> </tbody> </table> </template> <script lang="ts"> import { defineComponent } from 'vue' interface Column { field: string title: string } interface Item { id: number name: string age: number } export default defineComponent({ name: 'Table', props: { columns: { type: Array as () => Column[], required: true, }, items: { type: Array as () => Item[], required: true, }, }, }) </script> ``` 在组件中,我们定义了两个接口,Column 和 Item,分别表示表格的列和数据项。在 props 中声明了 columns 和 items,用于接收传入的列和数据。在模板中,使用 v-for 渲染表头和表格内容。 接下来,在 src 目录下创建一个名为 api.ts 的文件,用于模拟请求数据。示例代码如下: ```ts interface Response<T> { code: number data: T } interface User { id: number name: string age: number } const userList: User[] = [ { id: 1, name: '张三', age: 20 }, { id: 2, name: '李四', age: 22 }, { id: 3, name: '王五', age: 25 }, ] export function getUserList(): Promise<Response<User[]>> { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 0, data: userList }) }, 1000) }) } ``` 在 api.ts 中,我们定义了一个 getUserList 函数,用于模拟请求用户列表数据。该函数返回一个 Promise,用于异步获取数据。 最后,在 src 目录下创建一个名为 App.vue 的文件,用于渲染页面。示例代码如下: ```vue <template> <div> <Table :columns="columns" :items="items" /> </div> </template> <script lang="ts"> import { defineComponent, ref, onMounted } from 'vue' import { getUserList } from './api' import Table from './components/Table.vue' export default defineComponent({ name: 'App', components: { Table }, setup() { const columns = [ { field: 'id', title: 'ID' }, { field: 'name', title: '姓名' }, { field: 'age', title: '年龄' }, ] const items = ref([]) onMounted(async () => { const response = await getUserList() items.value = response.data }) return { columns, items, } }, }) </script> ``` 在 App.vue 中,我们引入了 Table 组件,并在模板中使用 props 将列和数据传递给表格组件。在 setup 中,我们使用 ref 创建了一个 items 变量,用于存储用户列表数据。在 onMounted 生命周期钩子中,使用 async/await 异步获取数据,并将数据赋值给 items 变量。 这样,我们就完成了一个简单的 Vue 3 + TypeScript + Vite 的获取列表数据渲染到表格的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值