Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vue 3 presenta la API de composición, que aporta nueva flexibilidad y potencia a la comunicación de componentes.
En el desarrollo front-end, los componentes pueden considerarse como unidades independientes que crean una interfaz de usuario. Encapsula funcionalidades y estilos específicos, se puede reutilizar y se puede desarrollar y probar independientemente de otras partes. La función principal de los componentes es mejorar la reutilización, mantenibilidad y escalabilidad del código. Al dividir la interfaz en múltiples componentes, los desarrolladores pueden administrar más fácilmente aplicaciones complejas y cada componente se puede optimizar para mejorar la eficiencia general del desarrollo y el rendimiento de las aplicaciones.
En marcos de front-end como Vue.js, los componentes se pueden anidar para formar un árbol de componentes. En esta estructura de árbol, cada componente puede tener subcomponentes, y estos subcomponentes pueden tener sus propios subcomponentes, formando una estructura jerárquica. Esta estructura deja clara la relación entre los componentes y facilita la gestión y el mantenimiento.
Los conceptos de árboles de componentes y relaciones entre componentes padre-hijo son cruciales para comprender la comunicación de componentes. Dominar estos conocimientos básicos puede ayudar a los desarrolladores a diseñar e implementar mecanismos de comunicación entre componentes de manera más efectiva.
¿Qué son los accesorios?
Los accesorios son un mecanismo para que los componentes principales pasen datos a los componentes secundarios.En Vue 3, usedefineProps
La API se utiliza para declarar accesorios de recepción, lo que mantiene el flujo de datos unidireccional y garantiza la independencia y reutilización de los componentes.
Cómo pasar accesorios en el componente principal
En la plantilla del componente principal, utilicev-bind
o abreviatura:
Para vincular datos:
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
aquí,:my-prop
Indica que se trata de un accesorio vinculado dinámicamente,parentData
¿Están los datos definidos en el componente principal?。
Cómo recibir accesorios en el componente secundario
En el componente secundario, usedefineProps
Para declarar los accesorios recibidos:
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
existir<script setup>
En azúcar sintáctico,defineProps
Expondrá automáticamente los accesorios como propiedades de respuesta del componente.。
que es emitir
Emitir es un mecanismo para que los componentes secundarios envíen mensajes a los componentes principales.En Vue 3, usedefineEmits
API para declarar eventos que se pueden emitir y usaremit
función para desencadenar eventos.
Cómo desencadenar un evento en un componente secundario
En el método del componente secundario, use defineEmits
para declarar eventos que se pueden emitir y utilizar emit
para desencadenar:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
se utiliza para declarar eventos que un componente puede emitir, mientras queemit
Las funciones se utilizan para desencadenar estos eventos.
Cómo escuchar los eventos del componente secundario en el componente principal
En la plantilla del componente principal,usarv-on
o abreviatura@
Para escuchar eventos emitidos por componentes secundarios:
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
aquí,@my-event
Indica que el subcomponente de escucha emitemy-event
evento,handleEvent
Es un método definido en el componente principal. Cuando se activa el evento, se llamará a este método.
Supongamos que hay un componente principal.ParentComponent
y un subcomponenteChildComponent
, el componente principal debe pasar datos al componente secundario, y el componente secundario debe notificar al componente principal después de una operación específica.
componente principalParentComponent.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>
SubconjuntoChildComponent.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>
En este ejemplo, el componente principal pasa:my-prop
Pasar datos a componentes secundarios y pasar@child-event
Escuche los eventos emitidos por los componentes secundarios.pases de componentes secundariosdefineProps
Recibe el contenido pasado por el componente principal.myProp
y usarlo en el evento de clic del botónemit
Enviar datos al componente principal.
Pinia es la biblioteca de administración de estado recomendada oficialmente para Vue 3. Proporciona una forma basada en componentes de administrar el estado de la aplicación. Estos son algunos de los beneficios y características clave de Pinia:
Para comenzar a usar Pinia, primero necesitas instalar Pinia:
npm install pinia
O usar hilo:
yarn add pinia
Luego, configura Pinia en tu aplicación Vue:
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
Crear una tienda:
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
Utilice almacenar en el componente:
- <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>
La integración de Pinia con componentes es muy sencilla, principalmente a través dedefineStore
Función para crear una tienda. En componentes, puedes usar directamente el estado y los métodos en la tienda:
- <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>
En el ejemplo anterior, accedemos directamente en la plantilla.count
para mostrar el valor del contador y llamarlo en el evento de clic del botónincrement
Método para incrementar el valor del contador.
Uso básico de Proporcionar/Inyectar
En Vista 3,provide
yinject
Es un método de comunicación entre componentes padre e hijo que permite a un componente ancestro inyectar una dependencia en todos sus componentes descendientes, independientemente de cuán profunda sea la jerarquía de componentes.
provide
Las funciones proporcionan datos.inject
La función inyecta datos.Escenarios aplicables para Proporcionar/Inyectarprovide
yinject
Aplicable a los siguientes escenarios:
props
al pasar datos.Código de muestra:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
El concepto y uso de Teleport.Teleport
Es un nuevo componente integrado en Vue 3 que le permite "transmitir" una parte de la plantilla dentro de un componente a cualquier otra ubicación en el DOM.
Cómo utilizar Teleport para la comunicación de componentesTeleport
No se utiliza para la comunicación entre componentes, sino para controlar la posición de renderizado de los componentes.pero puedes usarTeleport
Se logra un método especial de comunicación al representar partes de un componente en el DOM del componente principal.
Código de muestra:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
Introducción a la API de composición
Vue 3 presenta la API de composición, que proporciona una nueva forma de organizar y reutilizar la lógica.aprobarsetup
Las funciones permiten a los desarrolladores controlar de manera más flexible el estado de respuesta y el ciclo de vida de los componentes.
Utilice ref y reactivo para la comunicación entre componentesref
yreactive
Es una herramienta en la API de composición para crear datos receptivos.
ref
Referencias reactivas para crear tipos de datos básicos.reactive
Referencia reactiva para crear tipos de objetos.Uso de proporcionar e inyectar en la API de composición
En la API de composición,provide
yinject
admisiblesetup
Se utiliza en funciones para lograr la comunicación entre componentes.
Código de muestra:
- // 祖先组件
- 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 };
- }
- }
A través de estos métodos de comunicación únicos de Vue 3, los desarrolladores pueden organizar de manera más flexible la comunicación entre componentes y mejorar la capacidad de mantenimiento y reutilización del código.
Vue 3 presenta la API de composición, que aporta nueva flexibilidad y potentes funciones a la comunicación de componentes. La comunicación de componentes es la clave para crear interfaces de usuario complejas en el desarrollo front-end. Implica la transferencia de datos y la activación de eventos entre componentes principales e secundarios, componentes hermanos y componentes ancestros y descendientes. Vue 3 proporciona una variedad de métodos de comunicación, incluidos accesorios y emisiones tradicionales, así como las nuevas API Provide/Inject, Teleport y Composition.
La creación no es fácil. Si este artículo te ayuda, ¿puedes darme un me gusta?