React Hooks之useContext

2023-11-07

useContext

const value = useContext(MyContext);

接收一个 context 对象(React.createContext 的返回值)并返回该 context 的当前值。当前的 context 值由上层组件中距离当前组件最近的 <MyContext.Provider>value prop 决定。

当组件上层最近的 <MyContext.Provider> 更新时,该 Hook 会触发重渲染,并使用最新传递给 MyContext providercontext value 值。
即使祖先使用 React.memoshouldComponentUpdate,也会在组件本身使用 useContext 时重新渲染。

基本使用

1.创建全局Context上下文globalContext
2.App父组件通过Provider作为共享容器,生产Provider数据
3.Son子组件作为中间容器
4.Grandson孙组件通过useContext(globalContext)获取value渲染组件

globalContext.js

import React from 'react';
export const globalContext= React.createContext({
  //默认值defaultValue
  name: 'xiaoming',
  age: 18,
  sex: 'boy'
});
export const { Provider, Consumer } = globalContext;

App.js 父组件

import React, { Component } from 'react';
import Son from './son';//引入子组件
import { Provider } from './globalContext';
export default class App extends Component {
    render() {
        let student={
			  name: 'lily',
			  age: 17,
			  sex: 'girl'
			}
        return (
            //Provider共享容器 
            //如果没有Provider就会去context的默认值
            <Provider value={student}>
                <div>
                    <Son />
                </div>
            </Provider>
        );
    }
}

son.js 子组件

import React, { Component } from 'react';
import Grandson from "./grandson.js";//引入孙组件
export default class  Son extends Component {
    render() {
	    return (
	      <Grandson />
	    );
    }
}

grandson.js 孙组件

import React, { useContext } from 'react';
import { globalContext } from "./globalContext.js";//引入Consumer容器
export default function Grandson() {
    const value = useContext(globalContext)
    const { name, age, sex } = value;
    return (
        <div>
            name:{name}
            <br />
            age:{age}
            <br />
            sex:{sex}
        </div>
    );
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Hooks之useContext 的相关文章

随机推荐

  • tomcat 远程连接

    在catalina sh里面添加以下配置 JAVA OPTS server XX PermSize 1024m XX MaxPermSize 2048m Xms3072 Xmx5120m XX UseParallelGC XX Parall
  • 爆了!2023 年上半年全球程序员薪酬报告

    大家好 这里是 NewBeeNLP 近日 美国科技公司数据收集网站 Levels fyi 发布了 2023 年上半年全球程序员薪酬报告 并统计了各领域薪酬的增长比例 我们从上表可以看到各个领域当中 增强现实 虚拟现实 AR VR 总薪酬中位
  • PC汇编语言(NASM)

    http www drpaulcarter com pcasm 转载于 https www cnblogs com yuanping archive 2012 12 29 2838844 html
  • 归并排序,C++实现

    归并排序 采用分治法的一个典型应用 实现方法有两种 1 自上而下的递归 所有递归的方法都可以用迭代重写 2 自下而上的迭代 c 代码 递归版 include
  • QT串口收发

    QT串口收发 串口扫描 配置串口信息 设置串口名称 设置波特率 设置数据位 设置奇偶校验 设置停止位 设置流控制 设置读取数据的缓存大小 打开串口 串口打开并配置代码 串口接收数据 串口发送数据 串口关闭 offAndOn自定义函数 使co
  • react组件的生命周期以及基本语法

    组件化的发展历程 面向对象 封装 集成 多态 模块化 13 16年 解决了全局变量和变量勿滥 组件化 使编程更轻量化 创建组件 组件的使用 无需注册 跟html标签书写一致 首字母大写 必须有根标签 一个组件一个模块 组件生命周期钩子函数
  • mvc:default-servlet-handler和mvc:annotation-driven成对出现的原因

  • [人工智能-深度学习-62]:环境搭建 - 增加或更换硬盘,SSD/SATA/SAS哪个好?

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 人工智能 深度学习 62 环境搭建 增加或更换硬盘 SSD SATA SAS哪个好 文火冰糖 王文兵 的博客 CSDN博客 第1章 硬盘的分
  • Linux提权

    目录 编辑 一 信息收集 Linux脏牛内核漏洞 SUID 1 信息收集 2 SUID提权 案例 1 SUID提权配合脚本 2 本地配合内核漏洞 3 脏牛内核漏洞演示 linux exploit suggester 二 定时任务 环境变量
  • SQL注入原理-数值型注入

    小伙伴们大家好 本期为大家带来的是SQL注入原理 数值型注入的讲解 目录 SQL注入原理 数值型注入 编辑 1 测试是否存在注入点 2 判断字段个数 3 找出可以回显的字段 4 查询数据库的信息 1 查看当前的数据库 2 查看当前数据库的用
  • 操作系统调度算法

    在操作系统中存在多种调度算法 其中有的调度算法适用于作业调度 有的调度算法适用于进程调度 有的调度算法两者都适用 下面介绍几种常用的调度算法 先来先服务 FCFS 调度算法 FCFS调度算法是一种最简单的调度算法 该调度算法既可以用于作业调
  • ddt+BeautifulReport,报告展示用例描述,unittest用例统计

    当前使用的ddt来管理测试数据 需要读取测试数据内每一条case的描述 修改之前 修改途径 ddt源码内 将test data docstring get test data docstring func v 修改为 test data d
  • 【Java】得到当前股票信息

    import java io BufferedReader import java io InputStreamReader import java net HttpURLConnection import java net URL pub
  • Java TreeMap排序

    TreeMap实现了SortedMap接口 根据键自然排序 要求键必须是可比较的 要么指定Comparator比较器 如果没有Comparator比较器 键要实现Comparable接口 package Map import java ut
  • linux查看某文件夹下各个文件大小

    例如 我想查看 app 下各个文件的大小 cd app du h max depth 0 解释 cd app 进入 app 文件夹 du h max depth 0 查看文件夹下各个文件的大小 其中 0 代表查看 本文件夹 在这儿是app文
  • 如何实现前端项目的自动化测试?

    这其实就是我们常说的 UI自动化测试 针对这个问题 我先告知答题思路如下 1 什么是UI自动化 有什么优势 2 UI自动化实践中会遇到什么难题 3 如何解决难题 将UI落实到实践中 重点 4 UI自动化学习资料推荐 一 什么是UI自动化 为
  • 解决macos安装升级时报错安装所选更新时发生错误的问题

    系统有更新 下载到一半时点了取消下载 然后再等有空的时候点击安装更新一直失败 解决方法为 重新启动Mac 并按住Command R进入恢复模式 找到Terminal后输入csrutil disable 然后重启Mac 再次下载并安装更新 重
  • 第16章Stata面板数据分析

    目录 16 1短面板数据分析 案例延伸 延伸 关于模型的选择问题 16 2长面板数据 案例延伸 延伸 进行随即系数模型回归分析 面板数据 Panel Data 又被称为平行数据 指的是对某变量在一定时间内持续跟踪观测的结果 面板数据兼具了横
  • java: 错误: 不支持发行版本 5 报错的解决

    今天在使用maven配置好logback的依赖后 满心欢喜的去运行了一下 结果却报了 java 错误 不支持发行版本 5 在网上查了一下发现是jdk版本太高不支持编译java5版本的二进制 而这个问题常常是导入maven依赖时会遇到的 下面
  • React Hooks之useContext

    useContext const value useContext MyContext 接收一个 context 对象 React createContext 的返回值 并返回该 context 的当前值 当前的 context 值由上层组