react18【系列实用教程】useContext —— Context 机制实现越层组件传值 (2024最新版)

什么是 Context 机制?

Context 机制是 react 实现外层组件向内层组件传值的一种方案,父组件可以向其内部的任一组件传值,无论是子组件还是孙组件或更深层次的组件。

实现步骤

1.使用createContext方法创建一个上下文对象 Ctx

2.在顶层组件中通过Ctx.Provider 组件提供数据

3.在底层组件中通过 useContext 钩子函数获取数据

范例

context.js

创建独立的 context 文件,并导出createContext方法创建的上下文对象 data_context

js 复制代码
import { createContext } from "react";
// 通过传参可以指定默认值
export const data_context = createContext("默认值");

father.jsx

  • 导入上下文对象 data_context
  • data_context.Provider 标签包裹需要传值的内部组件
  • 用 value 属性传值
js 复制代码
import Child from "./child.jsx";
import "./common.css";
import { data_context } from "./context.js";

function Father() {
  const fatherData = "父组件的数据";
  return (
    <>
      <div className="box" style={{ width: "400px" }}>
        <h1>我是父组件</h1>
        <data_context.Provider value={fatherData}>
          <Child />
        </data_context.Provider>
      </div>
    </>
  );
}

export default Father;

common.css

css 复制代码
.box {
    border: 1px solid;
    padding: 20px;
}

child.jsx

js 复制代码
import GrandChild from "./grandchild.jsx";
function Child() {
  return (
    <>
      <div className="box">
        <h1>我是子组件</h1>
        <GrandChild />
      </div>
    </>
  );
}

export default Child;

grandchild.jsx

  • 导入 useContext 和 上下文对象 data_context
  • 调用 useContext 获取数据,参数为上下文对象 data_context
js 复制代码
import { useContext } from "react";
import { data_context } from "./context.js";

function GrandChild() {
  const dataFromGrandfather = useContext(data_context);
  return (
    <>
      <div className="box">
        <h1>我是孙组件</h1>
        <p>父组件传来的数据为:{dataFromGrandfather}</p>
      </div>
    </>
  );
}

export default GrandChild;
相关推荐
张彦峰ZYF4 小时前
LangGraph 深入理解 ReAct:让 AI Agent 真正学会「边想边做」
人工智能·llm·agent·react·langgroup
console.log('npc')3 天前
Mock 服务设计指南
前端框架·mock·react·visual studio·项目架构
倾听醉梦语3 天前
React/Vite/Next.js 前端开发工具 SpotPatch:点击页面元素精准定位 JSX/TSX 源码
javascript·react·ai编程·vite·next.js·前端开发工具
meilindehuzi_a4 天前
WebGPU DeepSeek项目实战(二):用单例模式加载Tokenizer并转发下载进度
单例模式·typescript·react
小当家.1054 天前
深入理解 ReAct Agent:从原理到 Java 实战
java·react.js·agent·react·架构设计·agent设计
DsirNg5 天前
从一次“接口背刺”谈 React 防静默崩溃与防御性编程
react·hooks
DsirNg5 天前
深入理解 React Hooks 原理
react·原理·hooks
带娃的IT创业者6 天前
微软开源“AI Agents for Beginners”:一场面向初学者的智能体范式启蒙
人工智能·microsoft·微软·开源·react·ai智能体·初学者
赵大仁6 天前
浏览器端 RAG:Transformers.js + WebGPU 本地检索入门
前端·ai·react·webgpu·rag
人间凡尔赛7 天前
React Compiler 1.0 正式落地:告别 useMemo / useCallback,2026 前端性能优化的新范式
前端·性能优化·react