Vuetify provides a powerful and feature-rich data table component that allows us to display tabular data in a structured and interactive format. The Vuetify data table offers various functionalities, including:
Sorting
Filtering
Pagination
Customization options
Pagination is a crucial feature in web applications, especially when dealing with large sets of data. It allows users to view a portion of the data at a time, typically divided into pages to make it more manageable and improve the overall performance.
In the context of a data table, pagination means breaking down a large dataset into smaller chunks, with controls (like the “Previous” and “Next” buttons) to navigate between them. This ensures that the table only displays a limited number of rows at a time, which prevents it from becoming hefty or causing performance issues. Visit this link to learn more about pagaination.
To add pagination to a Vuetify data table, use Vuetify’s built-in pagination feature along with the data table. This makes it easy for users to go through big sets of data without feeling overwhelmed.
Let’s implement it in the following playground:
{ "compilerOptions": { "target": "es5", "module": "esnext", "baseUrl": "./", "moduleResolution": "node", "paths": { "@/*": [ "src/*" ] }, "lib": [ "esnext", "dom", "dom.iterable", "scripthost" ] } }
Lines 5–11: We define the component, v-data-table
, for displaying tabular data. It is configured with the following props:
:items="paginatedCars"
: We bind the items in the data table to the paginatedCars
computed property. This determines what data is displayed in the table.
:headers="headers"
: This sets the column headers for the table.
:hide-default-footer="true"
: This hides the default pagination controls provided by Vuetify, which ww replacw with our custom pagination.
item-key="name"
: This specifies the property to use as the unique identifier for each item.
Lines 13–17: We define the <v-pagination>
component that provides pagination controls.
v-model="pagination.page"
: This binds the current page number to the pagination.page
property. Any changes to the current page is reflected in this property.
:length="Math.ceil(cars.length / pagination.rowsPerPage)"
: This determines the total number of pages. It calculates the number of pages based on the total number of items in cars
and the number of items per page specified in pagination.rowsPerPage
.
Lines 124–127: We define an object, pagination
, in the data
section that holds the pagination state. It includes two properties:
page
: This represents the current page number. In this case, it’s initially set to 5
.
rowsPerPage
: This determines how many items are displayed per page. It’s set to 2
.
Lines 130–136: We define a computed property, paginatedCars
, that calculates which portion of the cars
array should be displayed based on the current page and the number of items per page.
start
and end
: They are calculated to slice the array appropriately.
return this.cars.slice(start, end);
: This returns the subset of cars
to be displayed on the current page.
Free Resources