React的基础知识:Context

1. Context

在 React 中,Context 提供了一种通过组件树传递数据的方式,无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用,比如用户认证、主题、语言偏好等。

  1. 如何使用 Context
    创建 Context:首先,你需要使用 React.createContext 创建一个新的 Context 对象。
javascript 复制代码
const MyContext = React.createContext(defaultValue);

这里的 defaultValue 是当组件没有被任何 Provider 包裹时,消费组件(Consumer)会使用的值。

  1. 提供 Context 值:使用 <Context.Provider> 组件来包裹你的组件树,以便提供 Context 值。
java 复制代码
<MyContext.Provider value={/* 一些值 */}>
  <ChildComponent />
</MyContext.Provider>

value 属性可以是任何你想要传递给消费组件的数据,它可以是一个对象,也可以是一个函数。

  1. 消费 Context 值
    使用 useContext Hook:useContext 是一个 Hook,它允许函数组件直接订阅 Context 的变化。
javascript 复制代码
const value = useContext(MyContext);

示例

以下是一个简单的 Context 示例,展示了如何创建和使用 Context 来共享一个主题颜色。

javascript 复制代码
// 创建 Context
const ThemeContext = React.createContext('light');

// 提供 Context 值
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

// 消费 Context 值
function Toolbar() {
  return (
    <div>
      <ThemeButton />
    </div>
  );
}

function ThemeButton() {
  const theme = useContext(ThemeContext);
  return <button>{theme === 'dark' ? 'Light' : 'Dark'}</button>;
}

在这个例子中,ThemeContext 被用来在 App 组件和 ThemeButton 组件之间共享当前的主题颜色。App 组件通过 ThemeContext.Provider 提供了主题颜色的值,而 ThemeButton 组件使用 useContext Hook 来消费这个值。

相关推荐
FungLeo32 分钟前
成为全栈·Vue 管理后台篇·分类树与标签管理:层级数据如何落到管理界面
前端·javascript·vue.js·分类树·naive ui·标签管理·前端数据结构
总要学点什么1 小时前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Lank_M4 小时前
白底都占八成,PNG 为何只在图表页赢过 JPG
前端
张一凡934 小时前
给 Coding Agent 加一道"架构闸门":Jin 是如何做到"先审架构、再写代码、不漂移"的
前端·后端·agent
Linye4 小时前
AI 写的 HTML 原型全是空壳?聊聊真实 DOM 交互避坑
前端·人工智能
ZANE4 小时前
纯前端实现的 PDF 与图片互相转换工具技术实现
前端
Swot4 小时前
SvelteKit Remote Functions 使用指南
前端·后端
Cooper254 小时前
三源热榜去重加 AI 摘要:URL 唯一键踩出的三个坑
前端·python
Yk酱228405 小时前
A2UI探索随笔-技术选型
前端
前端繁华如梦5 小时前
# 从 73000 行压缩代码到 TypeScript 模块化:我把一个 Three.js FPS 游戏 1:1 复刻了一遍
前端