vue3爷孙组件通信——provide和inject

父组件中提供数据,并在子组件中注入这些数据,从而实现了组件之间的数据传递。可用于兄弟组件通信,爷孙组件通信,父子通信。


provide( '注入名', 注入值" ) 和 inject('注入名')

第一代组件:

复制代码
  <template>
	 <div >我是第一代组件</div>
	 <Two /> 
  </template>
  <script setup lang='ts'>
     import Two from "./components/Two";  // 引入第二代组件
	 import { provide, ref} from 'vue';
	 const obj = ref<any>({name: 'coderkey',age:18})
	 provide('userInfo',obj )
  </script>

第二代组件:

复制代码
  <template>
	 <div >我是第二代组件</div>
	 <Three /> 
  </template>
  <script setup lang='ts'>
     import Three from "./components/Three ";  // 引入第三代组件
  </script>

第三代组件:

复制代码
  <template>
	 <div >我是第三代组件</div>
  </template>
  <script setup lang='ts'>
	 import { inject, ref,onMounted } from 'vue';
	 const obj = ref<any>({name: 'coderkey',age:18})
	 onMounted(() =>{
     	const msg = inject('userInfo')
		console.log(msg.value)  // {name: 'coderkey',age:18}  // 响应式数据
     })
  </script>

这样子第一代组件的数据就可以传递给第三代组件使用了,数据还是响应式的。


相关推荐
Ausra无忧9 小时前
记录在公司把单服务器升级成多服务器架构流程
前端·后端·架构
极客密码9 小时前
来看看我用Codex两周时间vibe coding的这款轻量级的剪贴板管理应用,win/mac系统均可用
前端·ai编程·vibecoding
前端双越老师9 小时前
Agent 实战: 智语 + baoyu-skills 自动发布文章到公众号
前端·agent·全栈
hunterandroid9 小时前
Jetpack Compose 入门:用声明式 UI 写 Android 页面
前端
以和为贵9 小时前
前端手写 RAG 踩坑实录:四个让检索"翻车"的坑
前端·人工智能·面试
用户2136610035729 小时前
Redux异步方案与React性能优化Hooks
前端
假如让我当三天老蒯9 小时前
TypeScript 继续学习(学习用)
前端·面试·typescript
玄玄子9 小时前
CSS 浮动引起父元素高度塌陷
前端·css
拾年2759 小时前
我用 30 行代码,搞懂了大模型是怎么"读"中文的
javascript·人工智能·llm
竹林8189 小时前
从 ethers.js 到 viem:我在一个 DeFi 看板项目中踩过的所有坑与最终方案
前端·javascript