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>

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


相关推荐
Lee川几秒前
深入浅出:用 React 打造高性能懒加载无限滚动组件
前端·react.js
牛奶14 分钟前
开发者的"奇技淫巧":那些让你效率翻倍的实战技巧
前端·后端·程序员
咸鱼翻身更入味14 分钟前
Vue创建一个简单的Agent聊天——工具调用
前端
Timo来了14 分钟前
indexDB的用法示例
前端
泉城老铁15 分钟前
springboot实现word转换pdf
vue.js·后端
walking95718 分钟前
重新学习前端之设计模式与架构
前端·javascript·面试
walking95721 分钟前
重新学习前端之TypeScript
前端·javascript·面试
walking95721 分钟前
重新学习前端之Linux
前端·vue.js·面试
walking95722 分钟前
重新学习前端之CSS
前端·vue.js·面试
walking95722 分钟前
重新学习前端之Git
前端·vue.js·面试