首页 > 其他分享 >反应上下文

反应上下文

时间:2022-09-04 09:55:37浏览次数:79  
标签:createContext React 反应 API useContext 组件 上下文

反应上下文

React Context

D 耳朵伙计们: 反应上下文 API 今天将讨论。 React 最好的特性之一是 React Context API。
如果你有兴趣,你应该继续阅读,因为这将是一个了不起的。

React Tree Node

R 行动的 语境 允许 通过 数据 通过 组件树 没有 必须通过道具 手动向下 每个级别。

React 应用程序可以创建全局变量,这些变量可以通过使用 反应上下文 API .

语境 也被提升为 ** 更简单** , ** 打火机** 的方法 还原 状态 管理。

上下文 API 是 React 16.3 实现的(一种)新特性 简单的简单的交换 状态 在整个 全部的 项目。

首先,让我告诉你什么是问题,

有许多嵌套组件。堆栈的顶部和底部组件都需要访问状态。 换句话说 , 我们有很多 嵌套组件 .组件 在堆栈的顶部和底部 需要 进入国家 .

当我们需要来自父组件的子组件的数据时,数据会通过所有父节点到达子节点。

在 React 16.3 版本之前,我们需要 经过 数据 之间 一个 父母 组件和一个 孩子 组件所以,这个过程被称为 道具 钻孔 .

在我们的应用程序上, 道具数据 我们 经过 或者可以访问 任意数量的 孩子 成分 来自 顶级组件。

没有上下文 ,我们需要将状态传递为“ 道具 ” 通过每个嵌套组件。这就是所谓的 ” 支柱钻孔 ”。

Props Drilling way

在上图中,数据从根 App 组件传递到最后一个子组件以访问数据,在这种方法之间,数据从每个父组件传递到子组件。

解决方案 -

上下文 API -

React 应用程序可以创建可以通过使用 React Context API 传递的全局变量。
反应上下文 是一种管理状态的方法 全球 .

React 上下文 API:它是如何工作的?

你只需要 React.createContext() .两者都是 顾客 和一个 提供者回来 .这 零件 被称为 提供者 ,顾名思义,将国家赋予其后代。

全部成分 那会 要求 那 ” 店铺 ” 将其作为他们的 父母 它会 抓住 这 ” 店铺 。”一个 零件利用消耗状态已知 作为一个 消费者 .

React 的官方文档页面有更多详细信息。

如何使用上下文 API?

我们正在使用功能组件。所以我们必须使用 useContext 钩子来实现上下文 API。

创建上下文 -

要创建上下文,您必须导入 createContext 并对其进行初始化:

 导入 { useState, createContext } from "react";  
 从“react-dom/client”导入 ReactDOM;  
  
 const UserContext = createContext()

现在接下来我们将使用 Context Provider 来包装需要状态 Context 的组件树。

上下文提供者 -

将所有子组件包装在 Context Provider 中并提供状态值。

 函数应用程序(){  
 const [user, setUser] = useState("Jesse Hall");  
  
 返回 (  
 <UserContext.Provider value={user}>  
 <h1>{`你好 ${user}!`}</h1>  
 <Child1 user={user} />  
 </UserContext.Provider>  
 );  
 }

现在,此树中的所有组件都可以访问用户上下文。

使用上下文 -

我们必须使用 使用上下文 挂钩以便在子组件中使用它。

第一的 ,记得添加useContext 进口 陈述:

 导入 { useState, useContext } from "react";

然后,您可以在所有组件中访问用户上下文:

 函数 Child8() {  
 常量用户 = useContext(UserContext);  
  
 返回 (  
 <>  
 <h1>组件 5</h1>  
 <h2>{`你好 ${user} 再次!`}</h2>  
 </>  
 );  
 }

完整示例 -

 从“反应”导入{ useState,createContext,useContext};  
 从“react-dom/client”导入 ReactDOM;  
  
 常量 UserContext = createContext();  
  
 函数 Child1() {  
 const [user, setUser] = useState("Jesse Hall");  
  
 返回 (  
 <UserContext.Provider value={user}>  
 <h1>{`你好 ${user}!`}</h1>  
 <Child2 />  
 </UserContext.Provider>  
 );  
 }  
  
 函数 Child2() {  
 返回 (  
 <>  
 <h1>孩子 2</h1>  
 <Child3 />  
 </>  
 );  
 }  
  
 函数 Child3() {  
 返回 (  
 <>  
 <h1>孩子 3</h1>  
 <Child4 />  
 </>  
 );  
 }  
  
 函数 Child4() {  
 返回 (  
 <>  
 <h1>孩子 4</h1>  
 <Child5 />  
 </>  
 );  
 }  
  
 函数 Child5() {  
 常量用户 = useContext(UserContext);  
  
 返回 (  
 <>  
 <h1>孩子 5</h1>  
 <h2>{`你好 ${user} 再次!`}</h2>  
 </>  
 );  
 }  
  
 const root = ReactDOM.createRoot(document.getElementById('root'));  
 根.渲染(<Child1 /> );

我们有一些替代和简单的工具来管理数据 -

谢谢阅读 !!
更多故事请关注我!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11988/40120409

标签:createContext,React,反应,API,useContext,组件,上下文
From: https://www.cnblogs.com/amboke/p/16654318.html

相关文章

  • 修复:无法对未安装的组件执行反应状态更新。
    修复:无法对未安装的组件执行反应状态更新。在开发react.js应用程序时可能会遇到此错误:警告:无法对未安装的组件执行React状态更新。这是一个空操作,但它表明您的应用......
  • 与 JSX 反应
    与JSX反应大家好。今天我想谈谈JSX。ĴSX是源自JavaScript和XML首字母的首字母缩写词。JSX的主要目的是通过在javascript文件中编写HTML代码来提供更直......
  • 反应自定义钩子
    反应自定义钩子如果你正在看这篇文章,我希望你一定熟悉ReactHooks。在本文中,我们将为我们的应用程序创建一个自定义挂钩。首先,为什么我们需要在应用程序中创建自定义挂......
  • 反应变得简单!
    反应变得简单!如果您完全不知道对语言做出反应,那么阅读这篇文章可能是一个良好的开端,即使您一开始没有遵循,只要坚持到博客的最后一个,您就会得到它。这里还有一些关于React......
  • CPU上下文切换频繁定位
    1、看如何查看系统的上下文切换情况vmstat5 其中跟本文相关的比较重要的几列的含义:r:正在运行和等待CPU的进程数b:处于不可中断睡眠状态的进程数in:每秒中断次......
  • Mac系统下Datagrip打不开、点击没反应?
    有没有可能是因为你从网上下载了一些破解软件导致的?背景Mac系统下JB公司家的IDEA、Datagrip、PyCharm或Goland打不开点击没反应……分析大概率是之前安装过汉化插......
  • JavaScript执行上下文了解
    一、执行上下文是什么        在JavaScript中,有三种代码分类:        1.全局代码(全局中书写的代码)        2.局部代码(常见函数体里的代码)  ......
  • flutter系列之:构建Widget的上下文环境BuildContext详解
    目录简介BuildContext的本质BuildContext和InheritedWidgetBuildContext的层级关系总结简介我们知道Flutter中有两种Widget,分别是StatelessWidget和StatefulWidget,Statel......
  • Onedrive启动和安装没反应解决方案
    来源百度贴吧大神:https://tieba.baidu.com/p/5999745611可能是是系统注册表的问题,非官方的系统注册表被改动了。用“win+r”输入“regedit”,回车进入注册表,然后依次HKEY_L......
  • 07-React Hooks(路由组件懒加载, Context上下文, 组件优化...)
    扩展setState(1).setState(stateChange,[callback])------对象式的setState1.stateChange为状态改变对象(该对象可以体现出状态的更改)2.callback是可选的......