# Lifecycle hooks
Note
Tous les lifecycle hooks ont automatiquement leur contexte this lié à l'instance, afin que vous puissiez accéder aux données, aux propriétés computed et aux méthodes. Cela signifie que vous ne devez pas utiliser une fonction fléchée pour définir un lifecycle hook (c-à-d. created: () => this.fetchTodos()). La raison est que les fonctions fléchées lient le contexte parent, donc this ne sera pas l'instance de composant comme prévu et this.fetchTodos sera "undefined".
# beforeCreate
Type:
FunctionDétails:
Appelé de manière synchrone immédiatement après l'initialisation de l'instance, avant l'observation des donnéess et la configuration des événements/observateurs.
- Voir aussi: Diagramme de Cycle de Vie
# created
Type:
FunctionDétails:
Appelé de manière synchrone après la création de l'instance. À ce stade, l'instance a terminé le traitement des options, ce qui signifie que les éléments suivants ont été configurés: observation des donnéess, propriétés computed, méthodes, callbacks des observateurs/événements. Cependant, la phase de montage n'a pas été lancée et la propriété
$elne sera pas encore disponible.Voir aussi: Diagramme de Cycle de Vie
# beforeMount
Type:
FunctionDétails:
Appelée juste avant le début du montage: la fonction
renderest sur le point d'être appelée pour la première fois.Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi: Diagramme de Cycle de Vie
# mounted
Type:
FunctionDétails:
Appelé après le montage de l'instance, où l'élément passé à
Vue.createApp({}).mount()est remplacé par le nouvellement créévm.$el. Si l'instance racine est montée sur un élément dans le document,vm.$elsera également dans le document lorsquemountedest appelé.Notez que
mountedne garantit pas que tous les composants enfants ont également été montés. Si vous voulez attendre que la vue entière soit rendue, vous pouvez utiliser vm.$nextTick à l'intérieur demounted:mounted() { this.$nextTick(function () { // Code qui ne fonctionnera qu'après que // la vue entière ait été rendue }) }1
2
3
4
5
6Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi: Diagramme de Cycle de Vie
# beforeUpdate
Type:
FunctionDétails:
Appelé lorsque les donnéess changent, avant que le DOM ne soit patché. C'est un bon endroit pour accéder au DOM existant avant une mise à jour, par exemple pour supprimer les écouteurs d'événements ajoutés manuellement.
Ce hook n'est pas appelé lors du rendu côté serveur (SSR), car seul le rendu initial est effectué côté serveur.
Voir aussi: Diagramme de Cycle de Vie
# updated
Type:
FunctionDétails:
Appelé après une modification de données, le DOM virtuel est à nouveau rendu et corrigé.
Le DOM du composant aura été mis à jour lorsque ce hook sera appelé, vous pouvez donc effectuer des opérations dépendant du DOM ici. Cependant, dans la plupart des cas, vous devez éviter de changer d'état à l'intérieur du hook. Pour réagir aux changements d'état, il est généralement préférable d'utiliser une propriété computed ou un watcher.
Notez que
updatedne garantit pas que tous les composants enfants ont également été rendus. Si vous voulez attendre que la vue entière soit de nouveau rendue, vous pouvez utiliser vm.$nextTick à l'intérieur de deupdated:updated() { this.$nextTick(function () { // Code qui ne fonctionnera qu'après que // la vue entière ait été rendue }) }1
2
3
4
5
6Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi: Diagramme de Cycle de Vie
# activated
Type:
FunctionDétails:
Appelé lorsqu'un composant "keep-alive" est activé.
Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi:
# deactivated
Type:
FunctionDétails:
Appelé lorsqu'un composant "keep-alive" est désactivé.
Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi:
# beforeUnmount
Type:
FunctionDétails:
Appelé juste avant qu'une instance de composant ne soit démontée. À ce stade, l'instance est toujours pleinement fonctionnelle.
Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi: Diagramme de Cycle de Vie
# unmounted
Type:
FunctionDétails:
Appelé après qu'une instance de composant a été démontée. Lorsque ce hook est appelé, toutes les directives de l'instance de composant ont été dissociées, tous les écouteurs d'événements ont été supprimés et toutes les instances de composant enfant ont également été démontées.
Ce hook n'est pas appelé lors du rendu côté serveur (SSR).
Voir aussi: Diagramme de Cycle de Vie
# errorCaptured
Type:
(err: Error, instance: Component, info: string) => ?booleanDétails:
Appelé lorsqu'une erreur venant d'un composant descendant est capturée. Le hook reçoit trois arguments: l'erreur, l'instance de composant qui a déclenché l'erreur et un "string" contenant des informations sur l'endroit où l'erreur a été capturée. Le hook peut retourner
falsepour empêcher l'erreur de se propager davantage.TIP
Vous pouvez modifier l'état du composant dans ce hook. Cependant, il est important d'avoir des conditions dans votre template ou votre fonction de rendu qui court-circuitent les autres contenus lorsqu'une erreur a été capturée; sinon le composant sera projeté dans une boucle de rendu infinie.
Règles de propagation des erreurs
Par défaut, toutes les erreurs sont toujours envoyées au
config.errorHandlerglobal s'il est défini, afin que ces erreurs puissent toujours être signalées à un service d'analyse centralisé.Si plusieurs hooks
errorCapturedexistent sur l'arborescence d'un composant parent, ils seront tousinvoqués sur la même erreur.Si le hook
errorCapturedgénère lui-même une erreur, cette erreur et l'erreur capturée d'origine sont envoyées au fichier globalconfig.errorHandler.Un hook
errorCapturedpeut retournerfalsepour empêcher l'erreur de se propager davantage. Cela signifie essentiellement que "cette erreur a été gérée et doit être ignorée". Cela empêchera tout hookserrorCapturedsupplémentaire ou leconfig.errorHandlerglobal d'être invoqué pour cette erreur.
# renderTracked
Type:
(e: DebuggerEvent) => voidDétails:
Appelé lorsque le rendu du DOM virtuel est traqué. Le hook reçoit un
événement de débogagecomme argument. Cet événement vous indique quelle opération le composant a traqué, l'objet cible et la clé de cette opération.Usage:
<div id="app"> <button v-on:click="addToCart">Ajouter au panier</button> <p>Panier({{ cart }})</p> </div>1
2
3
4const app = Vue.createApp({ data() { return { cart: 0 } }, renderTracked({ key, target, type }) { console.log({ key, target, type }) /* La console affiche ceci lorsque le composant est rendu pour la première: { key: "cart", target: { cart: 0 }, type: "get" } */ }, methods: { addToCart() { this.cart += 1 } } }) app.mount('#app')1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# renderTriggered
Type:
(e: DebuggerEvent) => voidDétails:
Appelé lorsque le rendu du DOM virtuel est déclenché. Similaire à
renderTracked, reçoit unévénement de débogagecomme argument. Cet événement vous indique quelle opération a déclenché le nouveau rendu, l'objet cible et la clé de cette opération.Usage:
<div id="app"> <button v-on:click="addToCart">Ajouter au panier</button> <p>Panier({{ cart }})</p> </div>1
2
3
4const app = Vue.createApp({ data() { return { cart: 0 } }, renderTriggered({ key, target, type }) { console.log({ key, target, type }) }, methods: { addToCart() { this.cart += 1 /* Ceci provoquera l'invocation de renderTriggered { key: "cart", target: { cart: 1 }, type: "set" } */ } } }) app.mount('#app')1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26