news 2026/5/1 6:25:09

React学习之useContext

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React学习之useContext

具有树状结构关系组件之间传参可使用useContext进行跨组件之间进行传参

1、parent组件

import { useState } from "react"; import { Child } from "./Child"; import { ThemeContext } from "./UseContext"; export const UseContext = () => { //定义一个修改主题的函数 const [theme, setTheme] = useState<string>("light"); //定义一个切换主题的函数 const toggleTheme = () => { setTheme(theme === "light" ? "dark" : "light"); }; //定义需要传送的信息 const props = { name: "张三", age: 0 }; return ( <div> <p>{theme}</p> <ThemeContext.Provider value={{ theme, toggleTheme, props }}> <Child /> <button onClick={toggleTheme}>切换主题</button> </ThemeContext.Provider> </div> ); };

2、child组件

import {GrandChild} from './GrandChild' import { useContext } from 'react'; export const Child = () => { console.log('子组件') return ( <div> <p>子组件---</p> <GrandChild></GrandChild> </div> ); };

3、GrandChil组件

import { UseTheme } from "./useTheme"; export const GrandChild = () => { //引入自定义hook const { theme, toggleTheme, props } = UseTheme(); const toggleTheme2 = () => { //更改主题的方法 toggleTheme(); }; return ( <div> <p>传递的值----{theme}</p> <p> {props.name}---{props.age || 999} </p> <button onClick={toggleTheme2}>切换主题---通过改变顶层级数据</button> </div> ); };

4、UseContext组件

import { createContext } from "react"; export const ThemeContext = createContext({ theme: "light", toggleTheme: () => {}, // 默认空函数,避免消费时报错 props: { name: "", age: 0 }, });

5、useTheme组件(可把GrandChild组件内的获取数据方法单写成一个hook,实现功能抽离)

import { useContext } from "react"; import { ThemeContext } from "./UseContext"; export const UseTheme = () => { const { theme, toggleTheme, props } = useContext(ThemeContext); return { theme, toggleTheme, props }; };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 19:13:43

零配置部署VibeVoice:开箱即用的AI语音合成方案

零配置部署VibeVoice&#xff1a;开箱即用的AI语音合成方案 在内容创作日益智能化的今天&#xff0c;播客、有声书和虚拟访谈等长时语音应用正经历一场静默革命。传统文本转语音&#xff08;TTS&#xff09;系统虽然能完成基本朗读任务&#xff0c;但在面对多角色、长篇幅、高…

作者头像 李华
网站建设 2026/4/18 3:25:30

闭环步进电机设计资料分享[特殊字符]

闭环步进电机 两款闭环步进电机设计资料 资料内容包括: 1.原理图文件 2.pcb设计文件&#xff08;含Gerber 文件&#xff0c;可直接打样生产&#xff09; 3.含有pcb工程源文件&#xff0c;可以直接生成boom表。 3.程序源代码 4.设计验证通过&#xff0c;可作为学习研究参考。 注…

作者头像 李华
网站建设 2026/4/23 5:32:33

基于卡尔曼滤波的语音处理:让语音重归纯净

matlab&#xff0c;基于卡尔曼滤波的语音处理程序&#xff0c;针对现有语音信号&#xff0c;人为添加噪声&#xff0c;使用卡尔曼滤波器对其噪声进行滤波&#xff0c;达到语音去噪的目的在语音处理的领域中&#xff0c;噪声就像是一个令人头疼的“小怪兽”&#xff0c;常常破坏…

作者头像 李华
网站建设 2026/4/23 17:14:17

Qwen3-Embedding-4B极速体验:比本地快10倍的云端方案

Qwen3-Embedding-4B极速体验&#xff1a;比本地快10倍的云端方案 你是不是也遇到过这种情况&#xff1a;作为数据科学家&#xff0c;手头有10万条文本数据要做向量化处理&#xff0c;准备用于后续的语义搜索或推荐系统构建。你在自己的笔记本上跑Qwen3-Embedding模型&#xff…

作者头像 李华
网站建设 2026/5/1 4:57:36

全网最全8个AI论文网站,专科生搞定毕业论文必备!

全网最全8个AI论文网站&#xff0c;专科生搞定毕业论文必备&#xff01; AI 工具如何成为专科生毕业论文的得力助手 在当今快速发展的科技时代&#xff0c;AI 工具正在以前所未有的速度改变着我们的学习与工作方式。对于专科生而言&#xff0c;撰写一篇合格的毕业论文往往是一项…

作者头像 李华