react context上下文与vue中 provide inject的用法区别

news2024/12/28 17:39:30

一、react中:

数据传递

1、引入createContext

import { createContext } from "react";

2、创建导出

export const FspThemeContext = createContext({});

3、传递数据(value项不能缺少!!)

①不解构直接使用Provider

 ②解构后使用

const { Provider } = FspThemeContext

 数据接收

1、在孙组件中引入useContext,以及上文导出的FspThemeContext 

import { useContext } from "react";
import { FspThemeContext } from "/@/pages/XXX";

 2、将获取到的上下文赋值给fspData 

const fspData = useContext<any>(FspThemeContext)

3、使用

使用时直接:fspData?.fspTheme即可

二、vue2中provide和inject的使用

祖组件

<template>
	<div>
	<!-- 主内容 -->
	<router-view></router-view>

	</div>
</template>
<script>
	export default {
	    name:'layout',
		provide(){
			return {
				test:this.test //这里的this值当前layout组件实例
				box:'world'
			}
		},
		data() {
			return {
				test:'hello'
			}
		},
}
</script>

子组件

	export default {
		name:'order',
		inject:['test','box'],
		created(){
		 console.log(this.layout.test); //hello
		 console.log(this.box);// world
		}
    }

三、vue3中provide和inject的使用

祖组件

<script setup>
import { ref, provide } from 'vue'
import { fooSymbol } from './injectionSymbols'

// 提供静态值
provide('foo', 'bar')

// 提供响应式的值
const count = ref(0)
provide('count', count)

// 提供时将 Symbol 作为 key
provide(fooSymbol, count)
</script>

子组件

<script setup>
import { inject } from 'vue'
import { fooSymbol } from './injectionSymbols'

// 注入值的默认方式
const foo = inject('foo')

// 注入响应式的值
const count = inject('count')

// 通过 Symbol 类型的 key 注入
const foo2 = inject(fooSymbol)

// 其他!!!!!-----------
/* 第二个参数是可选的,
即在没有匹配到 key 时使用的默认值。它也可以是一个工厂函数,用来返回某些创建起来比较复杂的值。
如果默认值本身就是一个函数,那么你必须将 false 作为第三个参数传入,表明这个函数就是默认值,
而不是一个工厂函数。*/

// 注入一个值,若为空则使用提供的默认值
const bar = inject('foo', 'default value')

// 注入一个值,若为空则使用提供的工厂函数
const baz = inject('foo', () => new Map())

// 注入时为了表明提供的默认值是个函数,需要传入第三个参数
const fn = inject('function', () => {}, false)
</script>

provide() 必须在组件的 setup() 阶段同步调用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微流控芯片压力和流量的超高精度串级控制解决方案

摘要&#xff1a;针对微流控芯片压力驱动进样系统中压力和流量的高精度控制&#xff0c;本文提出了国产化替代解决方案。解决方案采用了积木式结构&#xff0c;便于快速搭建起气压驱动进样系统。解决方案的核心是采用了串级控制模式&#xff0c;结合高精度的传感器、电气比例阀…

JMeter如何进行多服务器远程测试

JMeter是Apache软件基金会的开源项目&#xff0c;主要来做功能和性能测试&#xff0c;用Java编写。 我们一般都会用JMeter在本地进行测试&#xff0c;但是受到单个电脑的性能影响&#xff0c;往往达不到性能测试的要求&#xff0c;无法有效的模拟高并发的场景&#xff0c;那么…

云计算服务模式、PaaS、SaaS都是啥?

什么是云计算服务模式 云计算服务模式是指云服务提供商提供的不同类型的云计算服务&#xff0c;包括基础设施即服务&#xff08;IaaS&#xff09;、平台即服务&#xff08;PaaS&#xff09;和软件即服务&#xff08;SaaS&#xff09;等。这些服务可以帮助企业在云端进行资源共…

Mysql找出执行慢的SQL【慢查询日志使用与分析】

分析慢SQL的步骤 慢查询的开启并捕获&#xff1a;开启慢查询日志&#xff0c;设置阈值&#xff0c;比如超过5秒钟的就是慢SQL&#xff0c;至少跑1天&#xff0c;看看生产的慢SQL情况&#xff0c;并将它抓取出来explain 慢SQL分析show Profile。&#xff08;比explain还要详细…

WideResNet(宽残差网络)算法解析-鸟类识别分类-Paddle实战

文章目录 一、理论基础1.前言2.设计理念2.1 ResNet算法2.1.1 residual&#xff08;残差结构&#xff09;模块2.1.2 residual的计算方式2.1.3 ResNet中两种不同的residual2.1.4 Batch Normalization&#xff08;批归一化&#xff09; 2.2 WideResNet(WRNs)算法2.2.1 宽残差块2.2…

vue2项目引入vant组件库

Vant官网 Vant 2 - Mobile UI Components built on Vue

【零基础入门学习Python---Python数据处理和存储保姆级教程】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

记一次Tomcat控制台弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量Tomcat控制台登录请求&#xff0c;现需根据流量情况进…

多线程的CAS(Compare and Swap)机制与乐观锁、AtomicInteger等原子包装类的使用

一.乐观锁 与 CAS机制 在java的多线程并发过程中&#xff1a; ​ 1.当一个对象在多个内存中都存在副本时&#xff0c;如果一个线程在自己的工作内存修改了共享变量&#xff0c;其它线程也应该能够看到被修改后的值。常常用volatile关键字来保证多线程数据的可见性。 ​…

Nginx Rewrite 重写跳转

文章目录 一.Nginx Rewrite概述1.Rewrite跳转场景2.Rewrite跳转场景3.Rewrite跳转实现4.Rewrite实际场景4.1Nginx跳转需求的实现方式4.2 rewrite放在 server{}&#xff0c;if{}&#xff0c;location{} 段中4.3对域名或参数字符串 5.nginx正则表达式5.1 常用的正则表达式元字符 …

Jmeter(jmeter-plugins插件的安装使用)

目录 一、安装JMter Plugins 二、Custom Thread Groups插件 Stepping Thread Group 元件 Ultimate Thread Group 一、安装JMter Plugins 1、官网下载 JMeter Plugins 的jar包 2. 将下载的jar包复制到 %JMETER_HOME%\lib\ext 目录下 3. 启动 JMeter --> Options -->…

学习系统编程No.26【信号处理实战】

引言&#xff1a; 北京时间&#xff1a;2023/6/26/13:35&#xff0c;昨天12点左右睡觉&#xff0c;本以为能和在学校一样&#xff0c;7点左右起床&#xff0c;设置了7点到8点30时间段内的4个闹钟&#xff0c;可惜没想到啊&#xff0c;没醒&#xff0c;直接睡到了12点&#xff…

rust基本语法

文章目录 变量与可变性变量与常量Shadowing&#xff08;隐藏&#xff09;数据类型标量类型1.整数类型2.浮点类型3.布尔类型4.字符类型 复合类型1.Tuple2.数组 函数if表达式循环1.loop2.while3.for 变量与可变性 声明变量使用let关键字&#xff0c;默认情况下&#xff0c;变量是…

kafka初学入门

kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高&#xff08;主从&#xff09;高&#xff08;主从&#xff09;非常高&#xff08;分布式&#xff09;非常高&#xff0…

大模型显存占用分析

大模型显存占用由以下几部分组成&#xff1a; 1. 模型本身参数&#xff0c;假设是1个单位 2.模型的梯度&#xff0c;同样也是一个单位 3.优化器参数&#xff08;占大头&#xff09;&#xff1a;以Adam参数为例&#xff0c;还需要在显卡中额外存储m和v两个参数&#xff0c;因…

File学习

1.构造方法 1.File(String pathname) 根据路径名创建抽象File对象 //1. 通过路径进行创建 pathname是字符串格式的路径名public File(String pathname) {if (pathname null) {throw new NullPointerException();}// 和系统交互 获取最近的File文件目录文件this.path fs.nor…

10分钟快速入门UI自动化-Puppeteer

目录 先简单介绍一下&#xff1a; 工欲善其事必先利其器&#xff0c;首先把所需要的工具装好 1. 安装node 2. 安装npm &#xff08;node安装时会自动安装npm,如果已安装node&#xff0c;此步请忽略) 3. 安装cnpm (npm下载包失败&#xff0c;选择cnpm安装) 4. 新建一个nod…

【ICer必备 4】IC封装设计流程

【ICer必备 3】模拟IC设计全流程 ------------------------------------------------文末附往期文章链接--------------------------------------前言一、IC封装设计过程二、常见IC封装类型三、常见封装特点四、封装设计常用软件五、EM仿真常用EDA&#xff08;1&#xff09;HFS…

apt命令概述,apt命令在Ubuntu16.04安装openjdk-7-jdk

apt是一条linux命令&#xff0c;适用于deb包管理式操作系统&#xff0c;主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。deb包是Debian 软件包格式的文件扩展名。 翻译过来就是&#xff1a; apt是一个命令行包管理器&#xff0c;为 搜索和管理以及查询…

解决MySQL删除数据后自增主键ID不连贯问题

首先我们需要取消id的自增和主键 下列代码以water表中的id列为例 alter table watermodify id int not null;alter table waterdrop primary key;然后重新生成id列 set i0; update water set water.id(i:i1);下一步就是重新设置为主键自增 alter table wateradd primary key…