现在位置: 首页 > Vue3 教程 > 正文

Vue3 inject() 函数


Vue3 选项式 API Vue3 选项式 API

inject() 函数是 Vue3 提供的一个 API,用于在子组件中获取父组件或祖先组件通过 provide() 函数提供的依赖。它主要用于跨层级组件之间的数据传递,尤其是在组件树较深的情况下。

基本语法

实例

import { inject } from 'vue';

const value = inject(key, defaultValue);
  • key: 一个字符串或 Symbol,表示需要注入的依赖的唯一标识。
  • defaultValue: 可选参数,如果未找到对应的依赖,则返回默认值。

使用场景

inject() 通常与 provide() 配合使用,适合以下场景:

  1. 跨层级组件通信:当组件层级较深时,通过 provide()inject() 可以避免逐层传递 props 的繁琐。
  2. 全局状态管理:在小型应用中,可以使用 provide()inject() 替代 Vuex 等状态管理工具。
  3. 插件开发:在插件中提供全局功能或配置时,inject() 是一个便捷的工具。

代码示例

父组件使用 provide() 提供数据

实例

import { provide, ref } from 'vue';

export default {
  setup() {
    const message = ref('Hello, Vue3!');
    provide('message', message); // 提供数据
  }
};

子组件使用 inject() 获取数据

实例

import { inject } from 'vue';

export default {
  setup() {
    const message = inject('message', 'Default Message'); // 注入数据
    return { message };
  }
};

注意事项

  1. 依赖的响应性:如果通过 provide() 提供的数据是响应式的(如 refreactive),在子组件中使用 inject() 获取的数据也会保持响应性。
  2. 默认值的作用:如果未找到对应的依赖,inject() 会返回默认值。建议始终设置默认值,以避免运行时错误。
  3. 避免滥用:虽然 provide()inject() 很方便,但滥用可能会导致组件之间的耦合度增加,建议仅在必要时使用。

Vue3 选项式 API Vue3 选项式 API