Cours 06 - Vue.js - Réactivité et Composants

Objectifs

Déroulement

Les concepts

État réactif (ref)

Avec la Composition API, la méthode recommandée pour déclarer l'état réactif consiste à utiliser la fonction ref()
Documentation officielle

Propriétés Calculées (computed)

Les propriétés calculées sont des valeurs dérivées d'états ou de props. Elles se recalculent automatiquement quand les dépendances changent. C'est particulièrement utile pour les calculs qui doivent être mis à jour en réponse à des changements d'état.
Documentation officielle

Exemple:

<script setup lang="ts">
import { ref, computed } from 'vue'

const firstName = ref('John')
const lastName = ref('Doe')

const fullName = computed(() => `${firstName.value} ${lastName.value}`)
</script>

<template>
  <div>
    <h1>{{ fullName }}</h1>
    <p>Prénom : {{ firstName }}</p>
    <p>Nom : {{ lastName }}</p>
  </div>
</template>

Explication:

  1. Nous importons les fonctions ref et computed depuis vue.
  2. Nous définissons deux variables réactives firstName et lastName avec la fonction ref.
  3. Nous définissons une valeur computed fullName qui utilise la fonction computed.
  4. La fonction computed retourne une fonction qui calcule la valeur complète du nom en concaténant les valeurs de firstName et lastName.
  5. Le template utilise les valeurs de firstName, lastName et fullName pour le rendu.

Avantages de l'utilisation d'une valeur computed avec l'API de composition :

Les composants

Les composants nous permettent de fractionner l'UI en morceaux indépendants et réutilisables, sur lesquels nous pouvons réfléchir de manière isolée. Il est courant pour une application d'être organisée en un arbre de composants imbriqués.
Documentation officielle

Props

Les props sont des options que vous pouvez passer à vos composants Vue. Ils permettent aux composants parents de passer des données aux composants enfants. C'est le moyen principal de faire passer des informations entre composants dans Vue.js.

Composant d'en-tête (Header.vue):

<script setup lang="ts">
defineProps<{
    logo: string
    title: string
}>()
</script>

<template>
  <header>
    <img :src="logo" alt="Logo">
    <h1>{{ title }}</h1>
  </header>
</template>

Page parente (App.vue):

<script setup lang="ts">
import Header from './components/Header.vue'
</script>

<template>
    <div>
        <Header logo="/logo.png" title="Ma page d'accueil" />
        <p>Ceci est le contenu de la page d'accueil.</p>
    </div>
</template>

Avantages de l'utilisation de l'API de composition pour les accessoires :

Liens utiles

Atelier 06 - Vue.js - Réactivité et Composants

Prérequis

Partie 01 - Typescript et date

Timeline.vue
Dans Timeline.vue on va mieux typer nos données.

posts.ts

Timeline.vue

Partie 02 - Computed et props

De retour dans Timeline.vue
On va ajouter les filtres pour que les posts apparaissent.

Refactoring

On va maintenant faire le refactoring de notre application avec des props

TimelineItem.vue avec le contenu de base:

<script setup lang="ts"></script>
<template></template>
<style></style>

Remise

Aucune remise pour cet atelier.