Skip to content

La réactivité dans Vue

Rappels

JavaScript n’est pas réactif par défaut

js
let a = 0

const b = 40

const c = a + b

c // 40

a = 2

c // 40 (pas de changement, car JS n’est pas réactif)

ref()

Nous avons vu en introduction comment utiliser ref() : cette fonction renvoie un objet dont la seule propriété qui nous intéresse est value :

js
const count = ref(0)

count.value // 0

count.value = 1 // Assignation d’une nouvelle valeur

count.value // 1

count.value++ // Incrémentation de 1

count.value // 2

Utilisation de computed()

computed() est aussi une fonction, qui renvoie aussi un objet dont la seule propriété dont il faut tenir compte est value.

Cependant, elle prendra en paramètre une fonction, qui sera exécutée à chaque fois que l’une de ses dépendances change, et la nouvelle valeur sera mise en cache (pour ne pas la recalculer à chaque lecture).

js
const a = ref(0)
const b = ref(40)

const c = computed(() => a + b) // a et b seront 2 dépendances de cette `computed` (valeur calculée)

c.value // 40

a.value++
c.value // 41
b.value++
c.value // 42

Non seulement la valeur sera recalculée immédiatement à chaque changement de l’une de ses dépendances, mais si jamais cette valeur calculée est utilisée dans la partie <template> du SFC, le DOM de ce composant et de l’application sera modifiée automatiquement aussi.

Le DOM sera aussi modifié à chaque changement d’une ref utilisée dans la template.

Il y a encore beaucoup de choses à dire sur la réactivité, il est déjà possible de faire beaucoup de choses avec simplement ref() et computed().