4e étageV VuePièce 7/7Mémo

Vue

Le mémo de Vue 3 : création de projet, template, réactivité, props, événements, slots, watch et composables.

Ce mémo résume l'essentiel de Vue 3 avec la Composition API et <script setup>. Chaque section renvoie au cours qui l'explique en détail.

Projet et commandes

CommandeEffet
npm create vue@latestCrée un projet.
npm installInstalle les dépendances.
npm run devLance le serveur de développement.
npm run buildPrépare la version finale dans dist.

Détails : Ton premier composant Vue.

Structure d'un fichier .vue

<script setup>
import { ref } from 'vue'
const nombre = ref(0)
</script>

<template>
  <button @click="nombre++">{{ nombre }}</button>
</template>

<style scoped>
button { font-weight: bold; }
</style>

Détails : Ton premier composant Vue.

Template

SyntaxeRôle
{{ valeur }}Affiche une valeur.
:src="image"Lie un attribut (v-bind).
@click="fonction"Écoute un événement (v-on).
v-if / v-else-if / v-elseCrée ou détruit selon une condition.
v-showCache avec le CSS display.
v-for="r in recettes" :key="r.id"Répète un élément, avec une clé unique.
v-modelLie un champ de formulaire.

Détails : Le template et les directives.

Réactivité

const portions = ref(4)                    // portions.value dans le script
const recette = reactive({ nom: 'Crêpes' })
const total = computed(() => portions.value * 2)
  • Dans le template, le .value d'un ref est retiré automatiquement.
  • Un computed est mis en cache et en lecture seule.

Détails : La réactivité.

Props, événements et modèle

<script setup lang="ts">
const { titre, minutes = 30 } = defineProps<{ titre: string, minutes?: number }>()
const emit = defineEmits<{ (e: 'choisir', id: number): void }>()
const note = defineModel('note', { default: 0 })
</script>
BesoinParentEnfant
Donnée:titre="x"defineProps
Événement@choisir="f"emit('choisir', 42)
Modèlev-model:note="n"defineModel('note')

Détails : Props, événements et v-model sur un composant.

Slots

<!-- enfant -->
<header><slot name="entete">Titre par défaut</slot></header>
<main><slot /></main>

<!-- parent -->
<template #entete><h3>Crêpes</h3></template>
<p>Contenu du slot par défaut</p>

Détails : Slots, watch et cycle de vie.

Watch et cycle de vie

watch(portions, (nouvelle, ancienne) => { /* ... */ })
watch(() => recette.nom, (nom) => { /* ... */ }, { immediate: true })
watchEffect(() => console.log(portions.value))

onMounted(() => { /* après le premier affichage */ })
onUnmounted(() => { /* nettoyage */ })

Détails : Slots, watch et cycle de vie.

Composables

src/composables/usePortions.js
export function usePortions(depart = 4) {
  const portions = ref(depart)
  return { portions }
}
  • Le nom commence par use.
  • On renvoie un objet ordinaire de refs.
  • Chaque appel crée un état indépendant.

Détails : Les composables.

Sources officielles

Ensuite

Projet
Lignes de code
Niveau
4e étage
Appartement
Vue
Pièce
7/7
Plan n°
vue/index
Lignes de code · fiches rédigées à partir des documentations officielles, sources citées en bas de chaque page.