Composants enfants

Passer des propriétés

Recevoir des propriétés

Attributs


Contexte

  1. Le parent fournit des données avec la propriété provide:

     <script>
     export default {
       name: 'App',
       components: { ComponentA1 },
       provide: {
         username: 'Bob'
       }
     };
     </script>
    

    Pour fournir des données définies dans data, on transforme provide en fonction:

     <script>
     export default {
       name: 'App',
       components: { ComponentA1 },
       data() {
         return {
           username: 'Bob'
         }
       },
       provide() {
         return {
           username: this.username
         }
       }
     };
     </script>
    
  2. Le descendant récupère des données avec la propriété inject:

     <script>
     export default {
       name: 'ComponentA3',
       inject: ['username']
     };
     </script>
    
     <template>
       <h2>Hello {{ username }}</h2>
     </template>
    

    Il est recommandé de ne pas mettre à jour les valeurs injectées à partir d’un composant descendant — à la place, fournir une méthode pour mettre à jour la valeur à partir du parent.


Événements personnalisés

  1. Le composant inclut déclare les événements émis avec la propriété emits et déclenche l’événement avec la méthode spéciale $emit

     <script>
     export default {
       name: 'Popup',
       emits: ['close']
     }
     </script>
    
     <template>
       <div>
         <h2>This is a popup</h2>
         <button @click="$emit('close')">Close</button>
       </div>
     </template>
    
  2. Le composant parent écoute les événements déclenchés avec la directive v-on

     <script>
     import Popup from './components/Popup.vue';
    
     export default {
       name: 'App',
       components: { Popup },
       data: () => ({
         showPopup: false
       })
     }
     </script>
    
     <template>
       <button @click="showPopup = true">Show Popup</button>
       <Popup @close="showPopup = false" v-show="showPopup" />
     </template>
    

Synchroniser les données


Slots

Multiples slots

Attributs


Composant dynamique

keep-alive


Portal