Vue3:组件间通信-provide和inject实现祖先组件与后代组件间直接通信

一、情景说明

我们学习了很多的组件间通信

这里在学习一种,祖先组件与后代组件间通信的技术

这里的后代,可以是多层继承关系,子组件,子子组件,子子子组件等等。

  • 在祖先组件中通过provide配置向后代组件提供数据
  • 在后代组件中通过inject配置来声明接收数据

二、案例

1、父组件

javascript 复制代码
  import { ref,reactive,provide } from "vue";
  // 数据
  let money = ref(100)
  let car = reactive({
    brand:'奔驰',
    price:100
  })
  // 用于更新money的方法
  function updateMoney(value:number){
    money.value += value
  }
  // 提供数据
  provide('moneyContext',{money,updateMoney})
  provide('car',car)

2、子子组件

接收到之后,就可以当成自己的变量直接操作了

javascript 复制代码
  import { inject } from 'vue';
  // 注入数据
 let {money,updateMoney} = inject('moneyContext',{money:0,updateMoney:(x:number)=>{}})
  let car = inject('car')

注意,我们可以发现,provide可以传递变量,也可以传递函数

当传递函数的时候,后代组件就可以调用该祖先组件的函数,从而,间接的操作祖先组件中的变量

实现,反向通信

相关推荐
学习笔记10115 分钟前
第十五章认识Ajax(六)
前端·javascript·ajax
消失的旧时光-194317 分钟前
Flutter 异步编程:Future 与 Stream 深度解析
android·前端·flutter
曹牧1 小时前
C# 中的 DateTime.Now.ToString() 方法支持多种预定义的格式字符
前端·c#
勿在浮沙筑高台1 小时前
海龟交易系统R
前端·人工智能·r语言
歪歪1001 小时前
C#如何在数据可视化工具中进行数据筛选?
开发语言·前端·信息可视化·前端框架·c#·visual studio
Captaincc2 小时前
AI 能帮你写代码,但把代码变成软件,还是得靠人
前端·后端·程序员
程序员杨工2 小时前
【原创】SpringBoot3+Vue3客户管理系统
vue.js·springboot
吃饺子不吃馅3 小时前
如何设计一个 Canvas 事件系统?
前端·canvas·图形学
theOtherSky3 小时前
element+vue3 table上下左右键切换input和select
javascript·vue.js·elementui·1024程序员节