Vue 单文件组件怎么使用 provide 与 inject 传值

梦枫吖_7306

梦枫吖_7306

2026-10-21

785人浏览

原创

vue单文件组件中provide/inject用于祖先向后代跨层级传递响应式数据,避免props逐层透传;祖先用provide提供reactive或ref数据,后代用inject获取并保持响应性,需注意命名冲突与默认值设置。

vue 单文件组件怎么使用 provide 与 inject 传值

Vue 单文件组件中使用 provide 与 inject,核心是让祖先组件“提供”数据,任意后代组件“注入”使用,跳过中间层级。它不替代 props,而是专治深层嵌套时的传值冗余问题。

祖先组件怎么写 provide

在祖先组件(比如 Layout、App 或某个父级业务组件)的 setup() 或选项式 API 中声明 provide:

  • 组合式 API(Vue 3 推荐):必须先从 vue 导入 provide,且只能在 setup() 内调用
  • 选项式 API:可直接写为对象,但如果要访问 this(如 data、computed),必须写成函数形式,否则拿不到响应式数据
  • 推荐始终用函数写法,避免踩坑。例如:
    <script><br>import { provide } from 'vue'<br>export default {<br> setup() {<br> const theme = { color: 'blue', fontSize: '14px' }<br> provide('theme', theme)<br> return {}<br> }<br>}<br></script>

后代组件怎么写 inject

在任意子孙组件中,通过 inject 获取数据。同样分两种写法:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习