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>

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


相关推荐
尘世中一位迷途小书童17 分钟前
用 Cesium 撸了一个森林火情监控大屏,弧线、粒子、发光效果都齐了
前端·javascript
IT_陈寒1 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
月光下的丝瓜1 小时前
Flutter 国内安装指南
前端·flutter
先吃饱再说2 小时前
JavaScript中`this` 的“千层套路”:从默认绑定到箭头函数的五种指向
javascript
玄星啊2 小时前
AI 编程的第 30 天,我怀念古法 Coding 了
前端·ai编程
Jolyne_2 小时前
Angular基础速通
前端·angular.js
foxire2 小时前
基于nodejs实现服务端内核引擎
javascript
锋行天下3 小时前
半秒开!还有谁!!!
前端·vue.js·架构
代码搬运媛4 小时前
git 下中文文件名乱码问题解决
前端
CaffeinePro4 小时前
告别知识点零散!React零基础通关,从环境搭建到Ant Design页面实战
前端·react.js