React-Hooks-useContext

简介: React-Hooks-useContext

前言


useContext 是 React 中的一个 Hooks,它用于访问 React 上下文(Context),并允许您在函数组件中共享全局数据,避免了逐层传递 props 的麻烦。以下是关于 useContext 的简介:


React Context 是一种全局状态管理的解决方案,通常用于跨组件层次传递数据,而不需要手动通过 props 将数据传递给每个中间组件。useContext 让您更轻松地使用这种全局数据。


使用 useContext 需要两个步骤:


创建上下文:首先,您需要使用 React.createContext 创建一个上下文对象。这个上下文对象充当数据的容器,然后可以通过提供者(Provider)来共享数据。


提供者和消费者:在某个父组件中,使用 Provider 来提供上下文的值。然后,在任何需要访问上下文数据的后代组件中,使用 useContext 钩子来获取这些数据。


useContext 接受上下文对象作为参数,并返回当前上下文的值。这使得在函数组件中非常容易访问全局数据,而无需传递 props。


举例来说,假设您有一个主题上下文,用于存储应用程序的主题信息,您可以使用 useContext 在任何组件中访问主题数据,而不必在每个组件中手动传递主题作为 props。


useContext 是 React 中的一个重要 Hooks,它使全局数据共享变得更加简单和高效,特别适用于状态管理和主题切换等应用场景。



useContext Hook 概述


  • useContext 相当于类组件中的 static contextType = Context

博主这里直接就是以两种不同的方式消费的代码贴在下方自己体会下就知道为啥要介绍 useContext Hook 了示例一:

import React, {createContext} from 'react';
const UserContext = createContext({});
const ColorContext = createContext({});
function Home() {
    return (
        <UserContext.Consumer>
            {
                value1 => {
                    return (
                        <ColorContext.Consumer>
                            {
                                value2 => {
                                    return (
                                        <div>
                                            <p>{value1.name}</p>
                                            <p>{value1.age}</p>
                                            <p>{value2.color}</p>
                                        </div>
                                    )
                                }
                            }
                        </ColorContext.Consumer>
                    )
                }
            }
        </UserContext.Consumer>
    )
}
export default function App() {
    return (
        <UserContext.Provider value={{name: 'yangbuyiya', age: 18}}>
            <ColorContext.Provider value={{color: 'red'}}>
                <Home/>
            </ColorContext.Provider>
        </UserContext.Provider>
    )
}


使用 useContext Hook:

import React, {createContext, useContext} from 'react';
const UserContext = createContext({});
const ColorContext = createContext({});
function Home() {
    const user = useContext(UserContext);
    const color = useContext(ColorContext);
    return (
        <div>
            <p>{user.name}</p>
            <p>{user.age}</p>
            <p>{color.color}</p>
        </div>
    )
}
export default function App() {
    return (
        <UserContext.Provider value={{name: 'yangbuyiya', age: 18}}>
            <ColorContext.Provider value={{color: 'red'}}>
                <Home/>
            </ColorContext.Provider>
        </UserContext.Provider>
    )
}

使用了之后直接通过 useContext 就可以直接将生产者的数据进行绑定然后获取到,使用起来非常方便。



最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
自然语言处理 测试技术 计算机视觉
OpenVI-感知理解系列之GAP骨骼点动作识别 ICCV23顶会论文深入解读
本文介绍了ICCV23中稿论文 GAP: Generative Action Description Prompts for Skeleton-based Action Recognition
1451 2
|
5月前
|
网络协议 Linux 网络安全
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
205 10
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
|
6月前
|
前端开发 程序员 API
鸿蒙元服务实战-笑笑五子棋(1)
《笑笑五子棋》是基于鸿蒙系统开发的元服务应用,由深度开发者分享开源。名字源于开发者女儿“笑笑”,充满程序员的独特浪漫。应用采用 ArkTS API 12、Canvas 等技术,支持 AtomicServiceTabs 和卡片开发,已成功上架并获得基础激励。凭借活跃设备数达标,还登上鸿蒙负一屏休闲分类菜单,提升了用户活跃度。本文介绍了应用背景和技术细节,下篇将聚焦代码实现。适合对鸿蒙开发感兴趣的开发者学习交流。
130 10
鸿蒙元服务实战-笑笑五子棋(1)
|
11月前
|
XML 数据格式 Python
Python实用记录(五):labelImg安装和使用-----看这篇就够了!
这篇文章介绍了在Windows 10系统中使用Anaconda3安装labelImg工具的方法,包括通过pip安装相关包和从GitHub下载配置,以及一些使用技巧,如修改预定义类别和自动保存功能。
1139 3
|
10月前
|
中间件 编译器 开发工具
如何用易语言进行跨平台的软件开发
如何用易语言进行跨平台的软件开发
129 3
|
缓存 监控 Java
SpringBoot健康监控
SpringBoot健康监控
156 1
|
SQL 分布式计算 大数据
"大数据计算难题揭秘:MaxCompute中hash join内存超限,究竟该如何破解?"
【8月更文挑战第20天】在大数据处理领域,阿里云的MaxCompute以高效稳定著称,但复杂的hash join操作常导致内存超限。本文通过一个实例解析此问题:数据分析师小王需对两个共计300GB的大表进行join,却遭遇内存不足。经分析发现,单个mapper任务内存默认为2GB,不足以支持大型hash表的构建。为此,提出三种解决方案:1) 提升mapper任务内存;2) 利用map join优化小表连接;3) 实施分而治之策略,将大表分割后逐一处理再合并结果。这些方法有助于提升大数据处理效率及稳定性。
336 0
|
XML 搜索推荐 数据格式
资源描述框架的用途及实际应用解析
**RDF(资源描述框架)**是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括`&lt;rdf:RDF&gt;`根元素和`&lt;rdf:Description&gt;`元素,后者用`about`属性标识资源。RDF还支持容器(如`&lt;Bag&gt;`、`&lt;Seq&gt;`和`&lt;Alt&gt;`)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文
355 0
|
机器学习/深度学习
基于DSP的音频信号处理
基于DSP的音频信号处理
685 2
|
Apache
修改mybatis-plus更新策略
修改mybatis-plus更新策略
218 0