Vue3 组件向下通信 祖孙组件的通信 provide与inject

avatar
作者
筋斗云
阅读量:5

介绍

当父子间通信可以使用props,祖孙使用provide(传递)或inject(接收),
这时不管组件套的多深都可以向下传递。
在这里插入图片描述

例子

现在有一个需求,把App.vue的数据传递到MusciPlay.vue里。
在这里插入图片描述

App.vue

爷爷

<template>   <div>     <MusicState></MusicState>   </div> </template> <script setup> import {provide, reactive} from 'vue' import MusicState from "./components/MusicState.vue"; const userMessage =reactive({   id:123,   age:18,   name:'生产队的驴' })   provide('userMessage', userMessage) </script>  

MusicState.vue

父亲

<template>   <MusicPlay></MusicPlay> </template> <script setup> import MusicPlay from "./MusicPlay.vue"; </script> 

MusicPlay.vue

儿子 接收值

<template>   {{userMessage}} </template> <script setup> import {inject} from "vue"; const userMessage = inject('userMessage') </script> 

效果

正常接收到了,当然在孙组件了正常修改该值也都是响应式的。
在这里插入图片描述
协议书修改

  <button @click="userMessage.name=''">修改</button> 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!