# Mixins
Quando o seu projeto Vue começar a crescer, você pode copiar e colar os mesmos dados, métodos e observadores repetidamente, se tiver componentes semelhantes. Esse tipo de ideia "quebra" a componentização que uma framework oferece, por isso mixins são úteis. Claro, você pode escrever todos esses arquivos separados como um único componente e usar adereços para tentar personalizá-los, mas o uso desses adereços pode facilmente ficar confuso.
Incrivelmente existe muitos códigos que ainda são feito com o famoso ctrc + ctrv de um componente a outro, então recomendamos fortemente o seu aprendizado com mixins para melhor utilização da framework.
Felizmente, os Mixins do Vue são bem simples de se usar (assim como a maioria das coisas no Vue comparando com outras frameworks).O componente terá acesso a todas as opções no mixin como se fosse declarado no próprio componente.
// arquivo mixin.js
export default {
data () {
idade: 18
},
created() {
console.log('Mixin existe!');
},
methods: {
mostrarIdade() {
console.log('Agora printando de uma função do mixin!');
}
}
}
// arquivo main.js
import mixin from './mixin.js'
new Vue({
mixins: [mixin],
created() {
console.log(this.$data);
this.mostrarIdade();
}
});
// "Mixin existe!"
// { idade: 18 }
// "Agora printando de uma função do mixin!"
Dessa forma, temos acesso ao mixin apenas pelo $data, evitando problemas com declarações no próprio componente que está utilizando o mixin.
// mixin.js file
export default {
data () {
return {
title: 'pertenco ao mixin'
}
}
}
// -----------------------------------------------------------
// main.js file
import mixin from './mixin.js';
export default {
mixins: [mixin],
data() {
return {
title: '>NÃO< estou no mixin'
}
},
created() {
console.log(this.title);
}
}
// => ">NÃO< pertenco ao mixin"
# Mixins Globais
Podemos criar mixins globais utilizando o Vue.mixin:
// irá jogar o 'importante' para as opções
Vue.mixin({
created() {
const importante = this.$options.importante;
if (importante) {
console.log(importante);
}
}
})
new Vue({
importante: 'he4rt'
});
// "he4rt"
- Quando for criar mixins globais, tome muito cuidado pelo fato de ser algo global que estará na instância sempre.
Na próxima seção, iremos ensinar a como utilizar os pre-processadores no Vue.