2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vue 3 introduit l'API Composition, qui apporte une nouvelle flexibilité et puissance à la communication des composants.
Dans le développement front-end, les composants peuvent être considérés comme des unités indépendantes qui construisent une interface utilisateur. Il encapsule des fonctionnalités et des styles spécifiques, peut être réutilisé et peut être développé et testé indépendamment des autres parties. La fonction principale des composants est d'améliorer la réutilisabilité, la maintenabilité et l'évolutivité du code. En divisant l'interface en plusieurs composants, les développeurs peuvent gérer plus facilement des applications complexes, et chaque composant peut être optimisé pour améliorer l'efficacité globale du développement et les performances des applications.
Dans les frameworks frontaux comme Vue.js, les composants peuvent être imbriqués pour former une arborescence de composants. Dans cette structure arborescente, chaque composant peut avoir des sous-composants, et ces sous-composants peuvent avoir leurs propres sous-composants, formant une structure hiérarchique. Cette structure rend claire la relation entre les composants et facilite la gestion et la maintenance.
Les concepts d'arbres de composants et de relations entre composants parent-enfant sont cruciaux pour comprendre la communication entre composants. La maîtrise de ces connaissances de base peut aider les développeurs à concevoir et à mettre en œuvre plus efficacement des mécanismes de communication entre les composants.
Que sont les accessoires
Les accessoires sont un mécanisme permettant aux composants parents de transmettre des données aux composants enfants.Dans Vue 3, utilisezdefineProps
L'API est utilisée pour déclarer les accessoires de réception, ce qui maintient le flux de données unidirectionnel et garantit l'indépendance et la réutilisabilité des composants.
Comment passer des accessoires dans le composant parent
Dans le modèle du composant parent, utilisezv-bind
ou abréviation:
Pour lier des données :
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
ici,:my-prop
Indique qu'il s'agit d'un accessoire lié dynamiquement,parentData
Les données sont-elles définies dans le composant parent。
Comment recevoir des accessoires dans le composant enfant
Dans le composant enfant, utilisezdefineProps
Pour déclarer les accessoires reçus :
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
exister<script setup>
En sucre syntaxique,defineProps
Exposera automatiquement les accessoires en tant que propriétés réactives du composant。
qu'est-ce qui est émis
Emit est un mécanisme permettant aux composants enfants d'envoyer des messages aux composants parents.Dans Vue 3, utilisezdefineEmits
API pour déclarer les événements pouvant être émis et utiliseremit
fonction pour déclencher des événements.
Comment déclencher un événement dans un composant enfant
Dans la méthode du composant enfant, utilisez defineEmits
pour déclarer les événements pouvant être émis, et utiliser emit
déclencher:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
est utilisé pour déclarer les événements qu'un composant peut émettre, tandis queemit
Les fonctions sont utilisées pour déclencher ces événements.
Comment écouter les événements du composant enfant dans le composant parent
Dans le modèle du composant parent,utiliserv-on
ou abréviation@
Pour écouter les événements émis par les composants enfants :
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
ici,@my-event
Indique que le sous-composant d'écoute émetmy-event
événement,handleEvent
Il s'agit d'une méthode définie dans le composant parent. Lorsque l'événement est déclenché, cette méthode sera appelée.
Supposons qu'il existe un composant parentParentComponent
et un sous-composantChildComponent
, le composant parent doit transmettre des données au composant enfant et le composant enfant doit notifier le composant parent après une opération spécifique.
composant parentParentComponent.vue
- <template>
- <ChildComponent :my-prop="parentData" @child-event="handleChildEvent" />
- </template>
-
- <script setup>
- import { ref } from 'vue';
- import ChildComponent from './ChildComponent.vue';
-
- const parentData = ref('initial data');
- const handleChildEvent = (data) => {
- console.log('Received data from child:', data);
- };
- </script>
Sous-ensembleChildComponent.vue
- <template>
- <button @click="sendDataToParent">Send Data to Parent</button>
- </template>
-
- <script setup>
- import { defineProps, defineEmits } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
-
- const emit = defineEmits(['child-event']);
-
- function sendDataToParent() {
- emit('child-event', props.myProp);
- }
- </script>
Dans cet exemple, le composant parent passe:my-prop
Transmettez les données aux composants enfants et transmettez@child-event
Écoutez les événements émis par les composants enfants.le composant enfant réussitdefineProps
Reçoit le contenu transmis par le composant parentmyProp
, et utilisez-le dans l'événement de clic sur le boutonemit
Envoyer les données au composant parent.
Pinia est la bibliothèque de gestion d'état officiellement recommandée pour Vue 3. Elle fournit un moyen basé sur des composants pour gérer l'état des applications. Voici quelques-uns des principaux avantages et fonctionnalités de Pinia :
Pour commencer à utiliser Pinia, vous devez d'abord installer Pinia :
npm install pinia
Ou utilisez du fil :
yarn add pinia
Ensuite, configurez Pinia dans votre application Vue :
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
Créer une boutique :
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
Utiliser le magasin dans le composant :
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
- const counterStore = useCounterStore();
- </script>
-
- <template>
- <div>
- <p>Count: {{ counterStore.count }}</p>
- <button @click="counterStore.increment">Increment</button>
- </div>
- </template>
L'intégration de Pinia avec les composants est très simple, principalement viadefineStore
fonction pour créer un magasin. Dans les composants, vous pouvez utiliser directement l'état et les méthodes dans le magasin :
- <template>
- <div>
- <p>Count: {{ count }}</p>
- <button @click="increment">Increment</button>
- </div>
- </template>
-
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
-
- const counterStore = useCounterStore();
- const { count, increment } = storeToRefs(counterStore);
- //如果这里不使用storeToRefs会丢失响应式特性
- </script>
Dans l'exemple ci-dessus, on accède directement dans le templatecount
pour afficher la valeur du compteur et l'appeler dans l'événement clic sur le boutonincrement
Méthode pour incrémenter la valeur du compteur.
Utilisation de base de Provide/Inject
Dans Vue 3,provide
etinject
Il s'agit d'une méthode de communication entre les composants parents et enfants qui permet à un composant ancêtre d'injecter une dépendance dans tous ses composants descendants, quelle que soit la profondeur de la hiérarchie des composants.
provide
Les fonctions fournissent des données.inject
La fonction injecte des données.Scénarios applicables pour Provide/Injectprovide
etinject
Applicable aux scénarios suivants :
props
lors de la transmission de données.Exemple de code:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Le concept et l'utilisation de TeleportTeleport
Il s'agit d'un nouveau composant intégré ajouté à Vue 3, qui vous permet de "transmettre" une partie du modèle à l'intérieur d'un composant vers n'importe quel autre emplacement du DOM.
Comment utiliser Teleport pour la communication entre composantsTeleport
Il n'est pas utilisé pour la communication entre les composants, mais pour contrôler la position de rendu des composants.mais tu peux utiliserTeleport
Une méthode de communication spéciale est obtenue en restituant des parties d'un composant dans le DOM du composant parent.
Exemple de code:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
Introduction à l'API de composition
Vue 3 introduit l'API Composition, qui offre une nouvelle façon d'organiser et de réutiliser la logique.passersetup
Les fonctions permettent aux développeurs de contrôler de manière plus flexible l'état de réactivité et le cycle de vie des composants.
Utilisez ref et reactive pour la communication inter-composantsref
etreactive
Il s'agit d'un outil de l'API Composition permettant de créer des données réactives.
ref
Références réactives pour créer des types de données de base.reactive
Référence réactive pour la création de types d'objets.Utilisation de provide et inject dans l'API Composition
Dans l'API de composition,provide
etinject
admissiblesetup
Utilisé dans les fonctions pour réaliser une communication entre composants.
Exemple de code:
- // 祖先组件
- import { provide } from 'vue';
-
- export default {
- setup() {
- const message = ref('Hello from Ancestor!');
- provide('message', message);
- }
- }
-
- // 子孙组件
- import { inject } from 'vue';
-
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Grâce à ces méthodes de communication uniques de Vue 3, les développeurs peuvent organiser de manière plus flexible la communication entre les composants et améliorer la maintenabilité et la réutilisation du code.
Vue 3 introduit l'API Composition, qui apporte une nouvelle flexibilité et des fonctionnalités puissantes à la communication des composants. La communication entre les composants est la clé de la création d'interfaces utilisateur complexes dans le développement front-end. Elle implique le transfert de données et le déclenchement d'événements entre les composants parents et enfants, les composants frères et les composants ancêtres et descendants. Vue 3 fournit une variété de méthodes de communication, y compris les accessoires et émissions traditionnels, ainsi que les nouvelles API Provide/Inject, Teleport et Composition.
La création n'est pas facile. Si cet article vous aide, pouvez-vous me donner un like ?