vue3+ts 中使用provide和inject

provide  提供  inject  注入

provide 和 inject  是可以跨多级组件使用的。这意味着你可以在任意深度的组件层次结构中使用 provide 在祖先组件中提供数据,然后在后代组件中使用 inject  来访问这些数据。

C组件是B组件的子组件,B组件是A组件的子组件

例1:传递数据

A组件:(祖父组件)

const car = ref('自行车')
provide('car', car.value)

定义car的变量,使用provide提供出一个数据car供后代使用

C组件:(孙子组件)

let myCar = inject('car')
console.log('myCar', myCar)

使用inject注入爷爷组件的数据,控制台输出:

例2:假如C组件需要触发A组件的方法

A组件:

const changeStatus = () => {
  console.log(1)
}

provide('changeStatus', changeStatus)

C组件:

const changeStatus = inject<() => void>('changeStatus');
const triggerChangeStatus = () => {
   if (changeStatus) {
      changeStatus();
   }
};

同样,如果想C组件触发A组件的方法,并且传递一个数据

C组件

const changeStatus = inject<(data: string) => void>('changeStatus')

const triggerChangeStatus = (val: any) => {
  if (changeStatus) {
    changeStatus(val)
  }
}

A组件

const changeStatus = (val: any) => {
  console.log('valaaaaaaaa====', val)
}

provide('changeStatus', changeStatus)

遇到的问题:

假如C组件有很多个爷爷组件,而有的爷爷向C组件提供了数据或方法,有的没有,那么这样使用,会在没有提供方法或者数据的爷爷组件对应的页面,警告:方法xxx  not  found.

解决:

C组件

const changeStatus = inject<(data: any) => void>('changeStatus', () => {
  return () => false
})

const changeSwitch = (val: any) => {
  if (changeStatus) {
    changeStatus(val)
  }
}

 设定,如果没有提供方法或者数据,默认false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/264067.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升

【圣诞】极安云科赠书活动第①期&#xff1a;CTF实战:从入门到提升 9787111724834 9787121376955 9787302556275 ISBN编号&#xff1a;9787111724834 书名&#xff1a;CTF实战:从入门到提升 定&#xff1a;99.00元 开本&#xff1a;184&#xff4d;&#xff4d;260&#xff…

文心一言 VS 讯飞星火 VS chatgpt (162)-- 算法导论13.1 2题

二、用go语言&#xff0c;对图13-1中的红黑树&#xff0c;画出对其调用TREE-INSERT 操作插人关键字 36 后的结果。如果插人的结点被标为红色&#xff0c;所得的树是否还是一棵红黑树?如果该结点被标为黑色呢? 文心一言&#xff0c;代码不能运行&#xff1a; 在Go语言中&…

【C#】TimeSpan

文章目录 概述属性时间计算拓展来源 概述 TimeSpan结构&#xff1a;表示一个时间间隔。 它含有以下四个构造函数&#xff1a; TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。&#xff08;DateTime.Tick:是计算机的一个计时周期&#xff0c;单位是一百纳秒&…

阿里联合字节测试开发带你从0到1开发自动化测试框架

一、序言 随着项目版本的快速迭代、APP测试有以下几个特点&#xff1a; 首先&#xff0c;功能点多且细&#xff0c;测试工作量大&#xff0c;容易遗漏&#xff1b;其次&#xff0c;代码模块常改动&#xff0c;回归测试很频繁&#xff0c;测试重复低效&#xff1b;最后&#x…

数字图像处理-空间域图像增强-爆肝18小时用通俗语言进行超详细的总结

目录 灰度变换 直方图&#xff08;Histogram&#xff09; 直方图均衡 直方图匹配&#xff08;规定化&#xff09; 空间滤波 低通滤波器 高通滤波器 ​​​​​​​ 本文章讲解数字图像处理空间域图像增强&#xff0c;大部分内容来源于课堂笔记中 灰度变换 图像增强&…

Tiktok怎样多开不封号?海外云手机就能解决!

Tik Tok作为全球范围内最热门的短视频平台之一&#xff0c;其中蕴含的市场机遇毫无疑问是十分巨大的。因此很多企业创建一个甚至多个Tik Tok账户进行商业活动&#xff0c;但是多开账户实际上很容易被封号。本文将详细介绍如何利用海外云手机解决Tik Tok多开导致封号的难题。 为…

Ring Co-XOR encryption based reversible data hiding for 3D mesh model

期刊&#xff1a;Signal Processing 作者&#xff1a;Lingfeng Qu et al. -- 摘要&#xff1a; 加密域可逆数据隐藏被广泛应用于云存储数字媒体的内容安全、隐私保护和便捷管理。然而&#xff0c;RDH-ED技术在三维网格模型载体中的应用研究仍处于起步阶段。为解决现有针对三…

【C语言】记录一次自己犯下的低级错误 o(╯□╰)o(局部数组与指针数组的传参、赋值)

在这里分享一下本人犯下的低级错误&#xff0c;希望大家别掉同样的坑 o(╥﹏╥)o 文章目录 事情原委错误分析及解救办法错误一&#xff1a; 使用局部数组arr并将其作为返回值解决方法&#xff1a;使用动态内存分配来创建数组&#xff0c;并在函数结束前手动释放内存。 错误二&…

多任务数据采集

进程&#xff1a;操作系统中资源分配的基本单位 线程&#xff1a;使用进程资源处理具体任务 一个进程中可以有多个线程&#xff1a;进程相当于一个公司&#xff0c;线程是公司里面的员工。 一 多线程 多线程都是关于功能的并发执行。而异步编程是关于函数之间的非阻塞执行&…

快递收发线上管理教程

前台快递收发几乎是每家公司行政前台的“必修课”&#xff0c;所以网络上制度模板满天飞&#xff0c;但现实中能彻底解决快递收发管理难题的几乎为零&#xff0c;那前台快递收发管理&#xff0c;究竟要如何才能摆脱制度的桎梏&#xff1f; 纵观各种前台快递收发制度范本&#…

【基础知识】大数据组件HBase简述

HBase是一个开源的、面向列&#xff08;Column-Oriented&#xff09;、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。 只是面向列&#xff0c;不是列式存储 mysql vs hbase vs clickhouse HMaster …

智能优化算法应用:基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野马算法4.实验参数设定5.算法结果6.参考文献7.MA…

Spring中你一定要知道的afterPropertiesSet()

文章目录 功能源码 功能 初始化bean执行的回调方法其一&#xff0c;它不像PostConstruct一样可以有多个&#xff0c;只能调用一次&#xff1b;它执行的时机是在PostConstruct之后&#xff0c;从它的名称也可以看出&#xff0c;他是在属性填充完&#xff0c;也就是bean初始化完…

计算机软考有哪些科目?都考什么内容?

一、软考初级科目 1、程序员 考核内容&#xff1a;计算机相关基础知识&#xff1b;基本数据结构和常用算法&#xff1b;C程序设计语言以及C、JAVA中的一种程序设计语言。 岗位描述&#xff1a;从事软件开发和调试工作的初级技术人员。 2、网络管理员 考核内容&#xff1a;…

【ICCV2023】MMVP:基于运动矩阵的视频预测

目录 导读 本文方法 步骤1&#xff1a;空间特征提取 步骤2&#xff1a;运动矩阵的构造和预测 步骤3&#xff1a;未来帧的合成和解码 实验 实验结果 消融实验 结论 论文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/html/Zhong_MMVP_Motion-Matrix…

【NeRF】Point-NeRF:Point-NeRF: Point-based Neural Radiance Fields阅读记录

文章目录 个人理解摘要简介基于点的NeRF表示体渲染和辐射场&#xff08;Volume rendering and radiance fields&#xff09;基于点的辐射场&#xff08;Point-based radiance field&#xff09;逐点处理&#xff08;Per-point processing&#xff09;视点相关的辐射率回归&…

Kylin基础知识点解析与应用探索

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习产出&#xff1a; Kylin简介 什么是Kylin Kylin的历史和发展 Kylin在大数据领域的地位和作用 Kylin架构 Kylin的组成部分和模块 Kylin的工作原理和流程 Kylin与其他大数据组件的关系和集成 Kylin功能…

el-select如何去掉placeholder属性

功能要求是&#xff1a;当el-select的disabled属性为true的时候不展示“请选择”字样 1、要去掉 el-select 元素的 placeholder 属性&#xff0c;可以在代码中将其设置为空字符串。 <el-select placeholder"" ...></el-select> 注意&#xff1a;这种方…

Keil5软件仿真 定时器互补通道 波形输出(Logic Analyzer)

步骤一&#xff1a;管脚配置确认。 ①配置定时器的管脚模式为复用推挽输出模式&#xff08;GPIO_MODE_AF_PP&#xff09;&#xff01;&#xff01;&#xff01;&#xff0c;注意&#xff1a;复用开漏模式软件仿真时无波形。 步骤二&#xff1a;编译程序。 ①点击编译按钮。 …

生产者和消费者模式

在一个系统中&#xff0c;存在生产者和消费者两种角色&#xff0c;他们通过内存缓冲区进行通信&#xff0c;生产者生产消费者需要的资料&#xff0c;消费者把资料做成产品。 最关键就是内存缓冲区为空的时候消费者必须等待&#xff0c;而内存缓冲区满的时候&#xff0c;生产者…