龙空技术网

React-Context进阶

啊咸蛋哟 75

前言:

而今朋友们对“react如何修改context的值”大概比较关心,我们都需要学习一些“react如何修改context的值”的相关内容。那么小编在网上搜集了一些有关“react如何修改context的值””的相关文章,希望各位老铁们能喜欢,同学们一起来了解一下吧!

createContext

createContext 是一个创建 上下文 便于组件数据相互提供和读取。

const AnyContext = createContext(defaultValue)
参数

defaultValue:当包裹需要读取上下文的组件中没有匹配的上下文时,该值可用作上下文中。也可指定其为 null。该默认值是静态的,永远不会改变。

返回值

createContext 返回一个 context 对象。

1) createContext

//  在任意组件外调用 createContext 来创建一个上下文。import { createContext } from 'react';const ColorContext = createContext('light');

该 context 对象本身不包含任何信息。 它只表示其他组件读取或提供的那个context。

SomeContext.Provider 被它包裹的组件提供上下文的值。useContext(SomeContext) 经常使用的方式,用于读取上下文的值。SomeContext.Consumer 很少会用到的方式,它用于读取上下文的值。2)SomeContext.Provider

用上下文 provider 包裹你的组件,来为里面所有的组件指定一个 context 的值:

function App() {  const [color, setColor] = useState('light');  // ...  return (    <ColorContext.Provider value={color}>      <Page />    </ColorContext.Provider>  );}
value:为provider 包裹的组件并用于读取context的值 ,无论层级多深。context 的值可以为任何类型。3)SomeContext.Consumer

先用旧的方式读取上下文:

function Button() {  //  旧的方式 (不推荐)  return (    <ColorContext.Consumer>      {color => (        <button className={color} />      )}    </ColorContext.Consumer>  );}

useContext() 来读取上下文:

function Button() {  // ✅ 推荐方式  const color = useContext(ColorContext);  return <button className={color} />;}

上面是同一个文件的使用方式,下面介绍一下不同文件的使用方式。

4)导入导出

也就是不同文件之间读取上下文

// Contexts.jsimport { createContext } from 'react';// 创建两个携带默认值的上下文export const CityContext = createContext('shanghai');export const AuthContext = createContext(null);
// Button.js// 引入其中一个上下文import { CityContext } from './Contexts.js';function Button() {  // 获取上下文信息  const theme = useContext(CityContext);  // ...}
// App.js// 引入两个上下文import { CityContext, AuthContext } from './Contexts.js';function App() {  // ...  return (    // 给两个上下文赋值    <CityContext.Provider value={theme}>      <AuthContext.Provider value={currentUser}>        <Page />      </AuthContext.Provider>    </CityContext.Provider>  );}

#前端##每日一诗#

-----------------------------------------

风急天高猿啸哀,渚清沙白鸟飞回。

无边落木萧萧下,不尽长江滚滚来。

万里悲秋常作客,百年多病独登台。

艰难苦恨繁霜鬓,潦倒新停浊酒杯。

------ 登高 [作者] 杜甫 [朝代] 唐

标签: #react如何修改context的值