Options de l'instance Vue
Les options dans Vue sont les différentes options disponibles sur une instance Vue lors de l'utilisation de l'API Options.
Quelques options courantes des instances Vue :
-
el- Spécifie l'élément DOM sur lequel l'instance Vue est montée. S'il n'est pas fourni, l'instance Vue ne sera pas montée automatiquement.
-
data- Définit l'objet de données de l'instance Vue. Le template, les propriétés calculées, les méthodes, les observateurs, etc. de l'instance Vue peuvent accéder à ces données.
-
computed- Contient des propriétés calculées dont les valeurs sont mises en cache en fonction de leurs dépendances. Les propriétés calculées ne sont réévaluées que lorsque leurs dépendances changent.
-
methods- Définit les méthodes de l'instance Vue qui peuvent être appelées dans le template via des écouteurs d'événements.
-
watch- Contient un ou plusieurs observateurs pour observer et réagir aux modifications des données dans l'instance Vue.
-
props- Définit les données externes que le composant peut recevoir.
-
components- Permet d'enregistrer des composants personnalisés dans l'instance Vue.
-
directives- Permet d'enregistrer des directives personnalisées globales.
-
filters- Définit des filtres qui peuvent être utilisés dans le template pour le formatage du texte.
-
model- Spécifie les propriétés et événements v-model personnalisés utilisés par le composant.
-
provide/inject- Fournit une capacité d'injection de dépendances, permettant de transmettre des données entre les composants.
-
lifecycle hooks- Inclut
onMounted,onUpdated,onUnmountedlifecycle hooks, etc., utilisés pour exécuter du code à différentes étapes de l'instance Vue. -
template- Définit le template HTML de l'instance Vue.
-
render function- Permet d'utiliser des fonctions JavaScript pour rendre des composants, offrant des capacités de personnalisation plus avancées.
-
errorCaptured- Utilisé pour capturer globalement les erreurs dans l'instance Vue.
-
emits- Définit les événements que le composant peut émettre.
-
setup- La fonction d'entrée de la Composition API de Vue 3, utilisée pour organiser la logique du composant.
el
Point de montage, utilisé pour spécifier l'élément DOM auquel l'instance Vue est montée :
Exemple
// options
});
app.mount('#app');
data
-
Type: Function or Object
-
Objectif:
dataest l'endroit dans l'instance Vue utilisé pour stocker les données du composant. Vous pouvezdatay définir diverses propriétés de données et les utiliser sur la page via la syntaxe de template.dataLes données qu'il contient se mettent à jour de manière réactive, ce qui signifie que lorsque les données changent, le contenu de page associé se met à jour automatiquement.
Exemple
data() {
return {
message: 'Hello Vue!'
};
}
});
computed
-
Type: Object
-
Objectif:
computedLa propriété permet de déclarer des propriétés calculées basées sur des dépendances réactives. Les propriétés calculées ne sont réévaluées que lorsque leurs dépendances associées changent, et elles mettent en cache les résultats calculés afin d'éviter des calculs répétés inutiles.
Exemple
data() {
return {
firstName: 'John',
lastName: 'Doe'
};
},
calculé: {
fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
});
methods
-
Type: Object
-
Objectif:
methodsLa propriété est utilisée pour stocker des méthodes dans l'instance Vue. Ces méthodes peuvent être appelées dans le template et également utilisées dans d'autres méthodes de l'instance. Contrairement aux propriétés calculées, les méthodes sont réexécutées à chaque fois qu'elles sont appelées, ce qui les rend adaptées pour répondre à des événements ou effectuer des opérations asynchrones.
Exemple
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
});
watch
-
Type: Object ou Function
-
Objectif:
watchLa propriété est utilisée pour observer et réagir aux changements de données dans l'instance Vue. Lorsque les données observées changent, la fonction de rappel spécifiée est exécutée. Elle convient pour gérer une logique asynchrone ou complexe de changement de données.
Exemple
data() {
return {
message: 'Hello Vue!'
};
},
watch: {
message(newValue, oldValue) {
console.log(`Message changé de ${oldValue} à ${newValue}`);
}
}
});
props
-
Type: Array ou Object
-
Objectif:
propsLa propriété est utilisée pour recevoir les données transmises du composant parent au composant enfant. Dans le composant enfant,propsles données transmises par le composant parent sont reçues et peuvent être utilisées à l'intérieur du composant.
Dans l'exemple suivant, MyComponent reçoit une prop title et l'utilise dans le template :
Exemple
props: ['title'],
template: '<h1>{{ title }}</h1>'
};
const app = Vue.createApp({
components: {
'my-component': MyComponent
},
template: '<my-component title="Hello Vue 3!"></my-component>'
});
app.mount('#app');
template
-
Type: String
-
Objectif:
templateLa propriété définit la structure du template du composant Vue. La syntaxe de template de Vue peut être utilisée dans le template, y compris l'interpolation, les directives, les propriétés calculées, etc. Le template est finalement compilé en une fonction de rendu pour générer le DOM virtuel du composant.
Exemple
data() {
return {
message: 'Hello Vue!'
};
},
template: '<div>{{ message }}</div>'
});
components
L'option `components` est utilisée pour enregistrer des composants locaux.
Exemple
template: '<div>A child component</div>'
};
const app = Vue.createApp({
components: {
'child-component': ChildComponent
},
template: '<child-component></child-component>'
}).mount('#app');
provide / inject
Le composant parent fournit les données, et le composant enfant les injecte et les utilise.
Exemple
inject: ['message'],
template: '<div>{{ message }}</div>'
};
const app = Vue.createApp({
fournissent() {
return {
message: 'Provided Message'
};
},
components: {
'child-component': ChildComponent
},
template: '<child-component></child-component>'
}).mount('#app');
Hooks de cycle de vie
beforeCreate
Appelé avant l'initialisation de l'instance.
Exemple
beforeCreate() {
console.log('beforeCreate');
}
}).mount('#app');
created
Appelé après la création de l'instance.
Exemple
created() {
console.log('created');
}
}).mount('#app');
beforeMount
Appelé avant le montage.
Exemple
beforeMount() {
console.log('beforeMount');
}
}).mount('#app');
mounted
Appelé après que l'instance a été montée.
Exemple
mounted() {
console.log('mounted');
}
}).mount('#app');
beforeUpdate
Appelé avant que les données soient mises à jour.
Exemple
data() {
return {
message: 'Hello'
};
},
beforeUpdate() {
console.log('beforeUpdate');
}
}).mount('#app');
updated
Appelé après que les données ont été mises à jour.
Exemple
data() {
return {
message: 'Hello'
};
},
updated() {
console.log('updated');
}
}).mount('#app');
beforeUnmount
Appelé avant que l'instance soit démontée.
Exemple
beforeUnmount() {
console.log('beforeUnmount');
}
}).mount('#app');
unmounted
Appelé après le démontage de l'instance.
Exemple
unmounted() {
console.log('unmounted');
}
}).mount('#app');
Autres options
directives
Enregistrer des directives locales.
Exemple
directives: {
focus: {
mounted(el) {
el.focus();
}
}
},
template: '<input v-focus>'
}).mount('#app');
mixins
Objets mixin.
Exemple
created() {
console.log('Mixin created');
}
};
const app = Vue.createApp({
mixins: [myMixin],
created() {
console.log('Component created');
}
}).mount('#app');
extends
Étendre un autre composant.
Exemple
created() {
console.log('BaseComponent créé');
}
};
const app = Vue.createApp({
extends: BaseComponent,
created() {
console.log('Composant étendu créé');
}
}).mount('#app');
inheritAttrs
Indique s'il faut hériter des attributs du composant parent.
Exemple
inheritAttrs: false,
props: ['title'],
template: '<div><h1>{{ title }}</h1></div>'
};
const app = Vue.createApp({
components: {
'my-component': MyComponent
},
template: '<my-component title="Bonjour" id="app"></my-component>'
}).mount('#app');
setup
Utilisé pour l'API de composition.
Exemple
setup() {
const message = Vue.ref('Bonjour Vue 3 !');
return { message };
},
template: '<h1>{{ message }}</h1>'
}).mount('#app');
expose
Dans l'API Composition de Vue 3, lorsque vous utilisez la fonction setup pour définir la logique d'un composant, vous pouvez utiliser la méthode expose pour spécifier explicitement les propriétés et méthodes à exposer à l'extérieur.
Voici un exemple simple montrant comment utiliser expose pour exposer des propriétés et des méthodes dans un composant Vue 3 :
Composant parent (ParentComponent.vu)
<div>
<child-component ref="child"></child-component>
<button @click="callChildMethod">Appeler l'enfant</button>
</div>
</template>
<script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
setup() {
const child = ref(null);
const callChildMethod = () => {
if (child.value) {
child.value.exposedMethod();
}
};
return {
child,
callChildMethod
};
}
};
</script>
Composant enfant (ChildComponent.vue)
<div>
<p>{{ exposedData }}</p>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup(_, { expose }) {
const exposedData = ref('Hello from Child Component');
const exposedMethod = () => {
console.log('Child component method called');
};
expose({
exposedData,
exposedMethod
});
return {
exposedData
};
}
};
</script>
Explication :
Composant parent:
- Dans le composant parent, utilisez
refpour créer une référence au composant enfant.child。 - Dans
callChildMethodDans la méthode, viachild.valueaccédez à l'instance du composant enfant et appelez les méthodes exposées par le composant enfant.exposedMethod。
- Dans le composant parent, utilisez
Composant enfant:
- Dans la fonction du composant enfant,
setupviarefcréez une donnée réactiveexposedData。 - définissez une méthode
exposedMethod, utilisée pour montrer comment exposer des méthodes. - Utiliser
exposela méthode pour exposer explicitementexposedDataetexposedMethodau composant parent. - Retour
exposedData, afin qu'il puisse être utilisé dans le template.
- Dans la fonction du composant enfant,