* Added a mixxin guide for vue * renamed folder to lower case * fix: corrected typo and grammar
		
			
				
	
	
		
			102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Mixins
 | |
| ---
 | |
| 
 | |
| ## Mixins
 | |
| 
 | |
| A constant problem is that we use some small functions in a lot of Vue components.  Instead of copying them into each of them, we can create mixins. Those can be included and will then be merged into the current component.
 | |
| 
 | |
| ### Examples
 | |
| 
 | |
| Let's look at the following example:
 | |
| 
 | |
| We see here that the mixin is merged into the context of the Vue Component, data of the mixin will be merged as well.
 | |
| ```javascript
 | |
| var myMixin = {
 | |
|   methods: {
 | |
|     hello: function(name) {
 | |
|       return "Hello " + name;
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| new Vue({
 | |
|   mixins: [myMixin],
 | |
|   created: function() {
 | |
|     console.log(this.hello("John"));
 | |
|   }
 | |
| });
 | |
| 
 | |
| // this will return print: Hello John
 | |
| ```
 | |
| 
 | |
| ```javascript
 | |
| var myMixin = {
 | |
|   created: function() {
 | |
|     console.log("running mixin constructor");
 | |
|   }
 | |
| };
 | |
| 
 | |
| Here we see that the constructor of the mixin is always executed before that of the component.
 | |
| new Vue({
 | |
|   mixins: [myMixin],
 | |
|   created: function() {
 | |
|     console.log("running component constructor");
 | |
|   }
 | |
| })
 | |
| // this will print:
 | |
| // running mixin constructor
 | |
| // running component constructor
 | |
| ```
 | |
| 
 | |
| Here we see that the Component will override the definitions in the mixin if there is a conflict.
 | |
| ```javascript
 | |
| var myMixin = {
 | |
|   methods: {
 | |
|     foo: {
 | |
|       console.log('mixin foo');
 | |
|     },
 | |
|     bar: {
 | |
|       console.log('mixin bar');
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| var comp = new Vue({
 | |
|   mixins: [myMixin],
 | |
|   methods: {
 | |
|     bar: function() {
 | |
|       console.log('component bar');
 | |
|     }
 | |
|   }
 | |
| });
 | |
| 
 | |
| comp.foo(); // prints "mixin foo"
 | |
| comp.bar(); // prints "component bar"
 | |
| ```
 | |
| 
 | |
| In this case we can use it to make a global readOnly Variable
 | |
| ```javascript
 | |
| // use global mixins carefully
 | |
| Vue.mixin({
 | |
|   data: function() {
 | |
|     return {
 | |
|       get greeting() {
 | |
|         return "World";
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| });
 | |
| 
 | |
| Vue.component('page-greeting', {
 | |
|   props: ,
 | |
|   template: `
 | |
|     <div>
 | |
|       <h1>
 | |
|         Hello {{ greeting }}
 | |
|       </h1>
 | |
|     </div>
 | |
|   `
 | |
| });
 | |
| ```
 |