Función inject() de Vue3


Vue3 选项式 APIAPI de opciones de Vue3

inject()La función es una API proporcionada por Vue3, utilizada en los componentes hijos para obtener del componente padre o de los componentes ancestros a través deprovide()las dependencias proporcionadas por la función. Se utiliza principalmente para la transmisión de datos entre componentes de diferentes niveles, especialmente cuando el árbol de componentes es profundo.

Sintaxis básica

Ejemplo

import { inject } from 'vue';

const value = inject(key, defaultValue);
  • key: un string o Symbol, que representa el identificador único de la dependencia que se necesita inyectar.
  • defaultValue: Parámetro opcional, si no se encuentra la dependencia correspondiente, se devuelve el valor predeterminado.

Casos de uso

inject()Normalmente se usa junto conprovide()en combinación, adecuado para los siguientes escenarios:

  1. Comunicación entre componentes de distintos niveles: Cuando la jerarquía de componentes es profunda, a través deprovide()yinject()se puede evitar la molestia de pasar props capa por capa.
  2. Gestión de estado global: En aplicaciones pequeñas, se puede usarprovide()yinject()en lugar de herramientas de gestión de estado como Vuex.
  3. Desarrollo de plugins: Cuando se proporcionan funciones o configuraciones globales en un plugin,inject()es una herramienta conveniente.

Ejemplo de código

El componente padre usa provide() para proporcionar datos

Ejemplo

import { provide, ref } from 'vue';

export default {
  setup() {
    const message = ref('Hello, Vue3!');
    provide('message', message); // Proporcionar datos
  }
};

El componente hijo usa inject() para obtener datos

Ejemplo

import { inject } from 'vue';

export default {
  setup() {
    const message = inject('message', 'Default Message'); // Inyectar datos
    return { message };
  }
};

Consideraciones

  1. Reactividad de las dependencias: Si a través deprovide()los datos proporcionados son reactivos (comoreforeactive), al usar en el componente hijoinject()los datos obtenidos también mantienen la reactividad.
  2. Función del valor predeterminado: Si no se encuentra la dependencia correspondiente,inject()se devolverá el valor predeterminado. Se recomienda establecer siempre un valor predeterminado para evitar errores en tiempo de ejecución.
  3. Evitar el uso excesivo: Aunqueprovide()yinject()es muy conveniente, su uso excesivo puede aumentar el acoplamiento entre componentes; se recomienda utilizarlo solo cuando sea necesario.

Vue3 选项式 APIAPI de opciones de Vue3

Otras extensiones