当前位置: 首页 > news >正文

[React] Context上下文的使用

文章目录

      • 1.Context的介绍
      • 2.为什么需要Context
      • 3.Context的使用

1.Context的介绍

  1. Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象,从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。

  2. Context是为了提供一个组件树形结构内的一个数据共享的容器。

2.为什么需要Context

在这里插入图片描述

在这里插入图片描述

使用Context方式进行数据的共享,各个树状组件均可通过统一的Consumer统一访问全局的Consumer共享数据。

3.Context的使用

Context的使用主要分为创建、插入、访问三个流程,通过创建context对象提供共享组件,将Provider指定嵌套至需要使用共享数据的顶层结构,然后各后代组件通过context访问共享数据(变量、常量、方法等)。

AppContext.js

import React from "react";// 初始值为参数
export const MyContext = React.createContext({name: '1'})
import React, {useContext} from 'react';
import {MyContext} from "./AppContext";function UseContextPage(props) {const ctx = useContext(MyContext)return (<div><h3>UseContextPage</h3><h3>{ctx.name}</h3></div>);
}export default UseContextPage;

Provider/Consumer

import React, {useContext} from "react";
export const Context = React.createContext()
const DemoContext = ()=> {const value = useContext(Context)/* my name is alien */return <div> my name is { value.age }</div>
}/* 用Context.Consumer 方式 */
const DemoContext1 = ()=>{return <Context.Consumer>{/*  my name is alien  */}{ (value)=> <div> my name is { value.name }</div> }</Context.Consumer>
}// 提供者
export default function UseContext(){return <div><Context.Provider value={{ name:'alien', age: 11}} ><DemoContext /><DemoContext1 /></Context.Provider></div>
}

相关文章:

[React] Context上下文的使用

文章目录 1.Context的介绍2.为什么需要Context3.Context的使用 1.Context的介绍 Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象&#xff0c;从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。 Context是为了提供一个组…...

高云FPGA系列教程(9):cmd-parser串口命令解析器移植

文章目录 @[toc]cmd-parser库简介cmd-parser库源码获取GW1NSR-4C移植cmd-parser实际测试cmd-parse命令解析器优化本文是高云FPGA系列教程的第9篇文章。 上一篇文章介绍片上ARM Cortex-M3硬核处理器串口外设的使用,演示轮询方式和中断方式接收串口数据,并进行回环测试。 本文…...

PHP8的静态变量和方法-PHP8知识详解

我们在上一课程讲到了public、private、protected这3个关键字&#xff0c;今天我们来讲解static关键字&#xff0c;明天再讲解final关键字。 如果不想通过创建对象来调用变量或方法&#xff0c;则可以将该变量或方法创建为静态变量或方法&#xff0c;也就是在变量或方法的前面…...

用AI写文章被百家号封禁

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 千万不要用AI创作&#xff0c;尤其是原文照搬!不要用ai,不要用&#xff0c;不要用!重要的事情说三遍。 近日ID名为“爸爸在家赚钱”用AI写了4-5篇文章投稿在百家号&#xff0c;随后百度就把他帐号…...

JVM--Java类加载器笔记

Java类加载器 代码经过编译变成了字节码打包成 Jar 文件。让 JVM 去加载需要的字节码&#xff0c;变成持久代/元数据区上的 Class 对象&#xff0c;接着执行程序逻辑。 类声明周期和加载过程 步骤&#xff1a;加载->链接&#xff08;校验->准备->解析&#xff09;-…...

【在Ubuntu部署Docker项目】— PROJECT#1

一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API&#xff0c;建立MySQL数据库&#xff0c;并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器&#xff0c;是三…...

【学习笔记】LOJ #6240. 仙人掌

毒瘤题&#x1f605; 简单版本 CF235D Graph Game 首先&#xff0c;考虑建立圆方树&#xff0c;然后对于一个点双&#xff08;简单环&#xff09;上的两个点&#xff0c;有两条路径可以到达 和简单版本类似&#xff0c;考虑容斥。即枚举点对 i , j i,j i,j之间 哪些路径是联…...

java通过接口转发文件(上传下载)

java接口转发上传的文件 RequestMapping(value "/XXXX/fileUpload", method RequestMethod.POST) public String getFileUpload2(RequestParam("file") MultipartFile file, HttpServletRequest request) public static String hotMapPost3(String ur…...

Docker-部署docker-compose以及管理服务

部署docker-compose以及管理服务 文章目录 部署docker-compose以及管理服务[TOC] 前言一、docker-compose是什么&#xff1f;1、介绍2、 功能 二、安装docker-compose1.yum直接安装2.二进制安装3.pip安装 三、docker-compose部署服务1.编写docker-compose.yml文件 总结 前言 D…...

Android - Monkey 测试应用出现Crash报错IllegalStateException

问题描述 平时使用Lottie动画都是正常的&#xff0c;没出过这个crash问题&#xff0c;看下的报错信息&#xff0c;代码中文件夹也设置了&#xff0c;没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…...

Spring源码分析 事务 实现原理

文章目录 什么是事务Spring事务管理Spring事务实现原理事务管理器事务定义事务的开启事务核心方法业务代码使用事务TransactionInterceptor 什么是事务 一般所指的事务是数据库事务&#xff0c;是指一批不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位。其…...

ADS-B及雷达显示终端8.3

新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后&#xff0c;生成地形图片&#xff0c;然后对图片进行贴图&#xff0c;一一按规定位置、大小将地形图贴至底图上&#xff0c;而后在底图上进行二维矢量地图的绘制&#xff0c;包括…...

第二章:最新版零基础学习 PYTHON 教程(第二节 - Python 输入/输出–从 Python 控制台获取输入)

目录 Python 中的控制台是什么? 接受来自控制台的输入: 1. 将输入类型转换为整数:...

linux安装配置 flume

目录 一 解压安装包 二 配置部署 &#xff08;1&#xff09;修改配置 &#xff08;2&#xff09;下载工具 &#xff08;3&#xff09;创建配置文件 &#xff08;4&#xff09;启动监听测试 &#xff08;5&#xff09;flume监控文件 一 解压安装包 这里提供了网盘资源 链…...

SSM - Springboot - MyBatis-Plus 全栈体系(十五)

第三章 MyBatis 二、MyBatis 基本使用 4. CRUD 强化练习 4.1 准备数据库数据 首先&#xff0c;我们需要准备一张名为 user 的表。该表包含字段 id&#xff08;主键&#xff09;、username、password。创建SQL如下&#xff1a; CREATE TABLE user (id INT(11) NOT NULL AUT…...

win10默认浏览器改不了怎么办,解决方法详解

win10默认浏览器改不了怎么办&#xff0c;解决方法详解_蓝天网络 在使用Windows 10操作系统时&#xff0c;你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题&#xff0c;不要担心&#xff0c;本文将为你提供详细的解决…...

C语言连接MySQL并执行SQL语句(hello world)

1.新建一个控制台项目 参考【VS2022 和 VS2010 C语言控制台输出 Hello World】VS2022 和 VS2010 C语言控制台输出 Hello World_vs2022源文件在哪_西晋的no1的博客-CSDN博客 2.安装MySQL 参考【MySQL 8.0.34安装教程】MySQL 8.0.34安装教程_西晋的no1的博客-CSDN博客 3.复制MySQ…...

react实现动态递增展示数字特效

在可视化展示界面时有一种场景&#xff0c;就是页面在初始化的时候&#xff0c;有些数字展示想要从某个值开始动态递增到实际值&#xff0c;形成一种动画效果。例如&#xff1a; 写一个数字递增的组件&#xff0c;有两种方式&#xff1a;1.固定步长&#xff0c;代码如下&#x…...

读取.nrrd和.dcm文件格式医学图片可视化与预处理

nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像&#xff0c;在这个数据格式中包含&#xff1a; 1、一个单个的数据头文件&#xff1a;为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…...

VS CODE中的筛选器如何打开?

最近更新了vscode1.82版本&#xff0c;发现在git管理界面有一个“筛选器”功能&#xff0c;十分好用&#xff0c;后来关掉了&#xff0c;找了好久都没有找到办法打开这个筛选器功能&#xff0c;今天无意中不知道按到了哪个快捷键&#xff0c;打开了&#xff0c;就是下图这个&am…...

告别混乱搜索:一文搞懂Quartus前仿真的两种玩法(Modelsim调用 vs VWF内嵌)

Quartus前仿真实战指南&#xff1a;Modelsim与VWF的高效选择策略 从Verilog到可靠仿真的关键跨越 当你完成了一段Verilog代码的编写&#xff0c;那种成就感往往伴随着一个迫切的需求&#xff1a;如何快速验证这段代码的行为是否符合预期&#xff1f;在Quartus开发环境中&#x…...

多智能体安全协调中的约束推断与CBF应用

1. 多智能体安全协调中的约束推断方法概述在分布式多智能体系统中&#xff0c;安全协调一直是个极具挑战性的问题。想象一下&#xff0c;当一群机器人在仓库中协同搬运货物时&#xff0c;每个机器人可能只知道部分环境信息&#xff08;比如某些障碍物的位置&#xff09;&#x…...

关于近期裁员潮的思考|AI让生产力爆炸,但也让平庸的公司战略原形毕露

周末闲着无事跟一个传统软件公司的老板聊天讨论&#xff0c;他问了一个非常尖锐的问题&#xff0c;AI时代会把程序员全部替代掉吗&#xff1f;现在各大公司貌似都在规划裁员节流...其实我觉着这轮裁员最扎心的地方&#xff0c;不是 AI 真的坐到了谁的工位上&#xff0c;而是它把…...

Redis++完全指南:C++开发者的终极Redis客户端解决方案

Redis完全指南&#xff1a;C开发者的终极Redis客户端解决方案 【免费下载链接】redis-plus-plus Redis client written in C 项目地址: https://gitcode.com/gh_mirrors/re/redis-plus-plus Redis是一款专为C开发者打造的高性能Redis客户端&#xff0c;它提供了简洁易用…...

线束工程化实践:从设计到测试的自动化工具链与开源资源

1. 项目概述&#xff1a;从“Awesome”清单到工程化实践在开源世界里&#xff0c;“Awesome”系列清单就像一个个精心整理的藏宝图&#xff0c;指引着开发者们快速找到某个领域内的优质资源。今天要聊的这个项目fastbeast2023-netizen/awesome-harness-engineering&#xff0c;…...

稀疏记忆微调技术:解决LLM持续学习中的灾难性遗忘

1. 稀疏记忆微调技术解析 1.1 持续学习的核心挑战 在大型语言模型&#xff08;LLM&#xff09;的实际应用中&#xff0c;灾难性遗忘&#xff08;Catastrophic Forgetting&#xff09;是持续学习面临的最大障碍。想象一下&#xff0c;当你教会一个学生新知识时&#xff0c;他却…...

XClaw Skill:AI Agent的社交网络与技能市场接入实战指南

1. 项目概述&#xff1a;XClaw Skill&#xff0c;AI Agent的“社交网络”与“技能市场”通行证如果你正在开发或使用AI Agent&#xff0c;并且希望它不再是一个信息孤岛&#xff0c;而是能与其他Agent交流、协作、甚至通过自己的“手艺”赚取收益&#xff0c;那么XClaw.network…...

CSP-J/S 2020 真题精讲:从“优秀的拆分”看二进制位运算的实战应用

1. 从“优秀的拆分”理解二进制位运算的妙用 第一次看到这道题时&#xff0c;我完全被"优秀的拆分"这个说法吸引了。题目要求我们把一个正整数拆分成不同的2的正整数次幂之和&#xff0c;听起来有点抽象对吧&#xff1f;让我用一个生活中的例子来解释&#xff1a;假设…...

基于Ansible Playbook的Kubernetes集群自动化部署实践

1. 项目概述&#xff1a;一个为Kubernetes集群部署而生的自动化剧本如果你和我一样&#xff0c;长期在运维和DevOps一线摸爬滚打&#xff0c;那么对Kubernetes集群的初始化部署一定又爱又恨。爱的是它带来的强大编排能力&#xff0c;恨的是那套繁琐、易错、文档分散的kubeadm i…...

Arm A64指令集SIMD与浮点寄存器架构解析

1. A64指令集的SIMD与浮点寄存器架构解析在Armv8-A架构中&#xff0c;A64指令集引入了强大的向量处理能力&#xff0c;通过32个128位宽的V寄存器&#xff08;V0-V31&#xff09;实现了高效的SIMD&#xff08;单指令多数据&#xff09;和浮点运算支持。这套寄存器文件的设计巧妙…...