Use of Vue3 table component

Use of Vue3 table component

1. Ant Design Vue

When a large amount of data needs to be displayed, we usually present it in the form of a report. According to intuitive habits, we must use table to display row and column data.

Therefore, we need to use table component in the Ant Design Vue component library to bind the data.

1. Official website address

Official website address: https://2x.antdv.com/components/table-cn#API

2. How to use

We first remodeled the e-book management page and adjusted the layout.

The sample code is as follows:

<template>
  <a-layout class="layout">
    <a-layout-content
        :style="{ background: '#fff', padding: '24px', minHeight: '280px' }">
      <div class="about">
        <h1>E-book management page</h1>
      </div>
    </a-layout-content>
  </a-layout>

 
</template>

The effect is as follows:

3. Display the e-book table

Things to do:

  • Table Rendering
  • slots : custom rendering
  • title : header rendering
  • customRender : value rendering

The sample code is as follows:

<template>
  <a-layout class="layout">
    <a-layout-content
        :style="{ background: '#fff', padding: '24px', minHeight: '280px' }">
      <a-table :columns="columns"
               :data-source="ebooks1"
               :pagination="pagination"
               :loading="loading"
      >
        <template #cover="{ text: cover }">
          <img v-if="cover" :src="cover" alt="avatar"/>
        </template>
        <template #name="{ text: name }">
          <a>{{ text }}</a>
        </template>
        <template #customTitle>

      <span>
        <smile-outlined/>
        Name
      </span>
          </template>
          <template #action="{ record }">
      <span>
        <a-space size="small">
            <a-button type="primary" @click="edit(record)">
              Edit</a-button>
             <a-button type="danger">
                Delete</a-button>
          </a-space>
      </span>
          </template>
      </a-table>
    </a-layout-content>
  </a-layout>

</template>
<script lang="ts">
import {SmileOutlined, DownOutlined} from '@ant-design/icons-vue';
import {defineComponent, onMounted, reactive, ref, toRef} from 'vue';
import axios from 'axios';

export default defineComponent({
  name: 'AdminEbook',
  setup() {
    const pagination = {
      onChange: (page: number) => {
        console.log(page);
      },
      pageSize: 3,
    };

    const loading = ref(false);
    const columns = [
      {
        title: 'Cover',
        dataIndex: 'cover',
        slots: {customRender: 'cover'}
      },
      {
        title: 'Name',
        dataIndex: 'name'
      },
      {
        title: 'Classification 1',
        dataIndex: 'category1Id',
        key: 'category1Id',
      },
      {
        title: 'Classification 2',
        dataIndex: 'category2Id',
        key: 'category2Id',
      },
      {
        title: 'Number of documents',
        dataIndex: 'docCount'
      },
      {
        title: 'Reading Number',
        dataIndex: 'viewCount'
      },
      {
        title: 'Number of Likes',
        dataIndex: 'voteCount'
      },
      {
        title: 'Action',
        key: 'action',
        slots: {customRender: 'action'}
      }
    ];
    //Use ref for data binding const ebooks = ref();
    // Use reactive data binding const ebooks1 = reactive({books: []})
    onMounted(() => {
      axios.get("/ebook/list?name=").then(response => {
        const data = response.data;
        ebooks.value = data.content;
        ebooks1.books = data.content;
      })
    })
    return {
      pagination,
      loading,
      columns,
      ebooks1: ebooks,
      ebooks2: toRef(ebooks1, "books")
    }
  },
  components:
    SmileOutlined,
    DownOutlined,
  },
});
</script>
<style scoped>
img {
  width: 50px;
  height: 50px;
}
</style>

Actual effect:

2. Conclusion

If you are not familiar with the use of table components, you need to keep trying. Simply put, it is the mapping of object properties.

In general, it is better to bind the data before displaying the page. If it is not very clear, please refer to this article "Details of Vue3 list interface data display".

This is the end of this article about the use of Vue3 table components. For more relevant Vue3 table component content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • How to encapsulate the table component of Vue Element
  • Detailed example of encapsulating the table component of Vue Element
  • vxe-table vue table table component function
  • Vue.js implements a sortable table component function example
  • Detailed example of implementing a simple table component in Vue
  • Vue fixed header fixed column click table header sortable table component
  • Detailed example of developing Vue.js table component
  • Vue+elementui realizes multiple selection and search functions of drop-down table
  • The table in vue+Element is editable (select drop-down box)
  • Vue implements drop-down table component

<<:  How to implement controllable dotted line with CSS

>>:  Summary of MySQL 8.0 Online DDL Quick Column Addition

Recommend

Node.js uses express-fileupload middleware to upload files

Table of contents Initialize the project Writing ...

Vue opens a new window and implements a graphic example of parameter transfer

The function I want to achieve is to open a new w...

17 excellent web designs carefully crafted by startups

Startups often bring us surprises with their unco...

WeChat applet uses the video player video component

This article example shares the specific code of ...

How to set mysql to case insensitive

mysql set to case insensitive Windows Go to the d...

Source code reveals why Vue2 this can directly obtain data and methods

Table of contents 1. Example: this can directly g...

CSS3 achieves conic-gradient effect

grammar: background-image: conic-gradient(from an...

Docker Compose practice and summary

Docker Compose can realize the orchestration of D...

Detailed process of configuring Https certificate under Nginx

1. The difference between Http and Https HTTP: It...

A detailed introduction to JavaScript primitive values ​​and wrapper objects

Table of contents Preface text Primitive types Pr...

Detailed explanation of client configuration for vue3+electron12+dll development

Table of contents Modify the repository source st...

Detailed explanation of how to dynamically set the browser title in Vue

Table of contents nonsense text The first router/...

The basic principles and detailed usage of viewport

1. Overview of viewport Mobile browsers usually r...