Vue is a popular JavaScript framework with many powerful features and tools for building modern, efficient web applications. One of them is mixins. Mixin is an advanced mechanism in Vue. It allows us to extract reusable functional parts from components so that these functions can be effectively reused. This is very useful when we develop common components such as lists, tables, and forms. it works.
How Mxin works
Mixin can be understood as the copying of objects. We can copy a mixin object into another object, thereby merging the two objects into a new object. When we add a mixin object to a Vue component, all properties and methods in the mixin object will be copied to the component. In addition, if the mixin object and the component have the same properties or methods, the component's properties or methods will override the same properties or methods in the mixin object.
You can create a mixin through the following code:
const myMixin = { data() { return { message: 'Hello, mixin!' } }, methods: { foo() { console.log('foo'); } } };
Mixins are usually mixed in components. You can add mixin to a component through the following code:
const Component = Vue.extend({ mixins: [myMixin], data() { return { anotherMessage: 'Hello, component!' } }, methods: { bar() { console.log('bar'); } } });
In this example, we create a Vue component and mixmyMixin
into the component through themixins
attribute, so that the component hasmyMixin
Declareddata
andmethods
attributes.
Implementing reusable components
Now, let’s take the list component as an example to discuss how to use mixin to implement reusable components.
First we can create a list data mixin (assuming that all list components need to use data), we create a mixin namedlistDataMixin
:
export default { data: function() { return { list: [], currentPage: 1, pageSize: 10, total: 0 }; }, computed: { totalPage() { return Math.ceil(this.total / this.pageSize); } }, methods: { getItems() {}, changePage() {}, refreshList() {} }, mounted() { this.refreshList(); } };
Here ,listDataMixin
defines an object containing data, calculated properties and methods, among which:
data
part defines common list-related Basic data:
list
: list data of the current page;currentPage
: current page number;pageSize
: How many records are displayed on each page;total
: How many records are there in total;Partially defined value calculation attribute
totalPage, this attribute obtains the total number of pages, calculated through
Math.ceil;
methods Thesection defines common operation methods:
: Get the current page data;
: Switch the page, pass in the page number parameter;
: Refresh the list data;
part Execute the
refreshList()method to automatically obtain the request data and refresh the list before rendering the page.
表头 {{ item }}
listDataMixinMixin in the component, and the fields and methods are defined in this Mixin. Provides public data and public services for our components, thereby realizing component reuse.
The above is the detailed content of Tips for using mixins in Vue to reuse components such as lists, tables, forms, etc.. For more information, please follow other related articles on the PHP Chinese website!