news 2026/7/2 11:26:52

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/7/1 17:54:16

Scarab模组管理器:打造极致空洞骑士游戏体验的智能工具

Scarab模组管理器&#xff1a;打造极致空洞骑士游戏体验的智能工具 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 想要为空洞骑士安装模组却苦于复杂的操作流程&#xff1f;S…

作者头像 李华
网站建设 2026/6/26 9:21:56

4位量化压缩Qwen3-0.6B,模型体积缩小75%仍可用

4位量化压缩Qwen3-0.6B&#xff0c;模型体积缩小75%仍可用 1. 引言&#xff1a;小模型的轻量化革命 在大语言模型&#xff08;LLM&#xff09;快速演进的背景下&#xff0c;模型参数规模不断攀升&#xff0c;但随之而来的部署成本和资源消耗也日益成为实际应用中的瓶颈。Qwen…

作者头像 李华
网站建设 2026/6/29 0:16:01

三菱FX5U PLC在4轴伺服机器人控制系统中的应用

三菱 FX5U PLC结构化4轴伺服机器人程序 包括三菱FX5U程序&#xff0c;挂扣生产线&#xff0c;威纶通触摸屏程序&#xff0c;IO表&#xff0c;材料清单&#xff0c;eplan和PDF电气图&#xff0c;整机结构图&#xff0c;真实使用中程序 4轴伺服程序&#xff0c;1个机器人&#xf…

作者头像 李华
网站建设 2026/6/28 23:21:33

机器学习入门(八)过拟合、欠拟合、L1、L2正则化

欠拟合与过拟合• 欠拟合&#xff1a;模型在训练集上表现不好&#xff0c;在测试集上也表现不好。模型过于简单&#xff0c;在训练集和测试集上的误差都较大。• 过拟合&#xff1a;模型在训练集上表现好&#xff0c;在测试集上表现不好。模型过于复杂&#xff0c;在训练集上误…

作者头像 李华
网站建设 2026/6/26 9:24:10

通义千问3-4B环境全自动配置:解决99%的CUDA报错问题

通义千问3-4B环境全自动配置&#xff1a;解决99%的CUDA报错问题 你是不是也经历过这样的场景&#xff1f;刚换了一台新电脑&#xff0c;兴致勃勃想跑个AI模型&#xff0c;结果一上来就卡在环境配置上。装PyTorch、配CUDA、调cuDNN版本……各种报错满天飞&#xff1a;“Found n…

作者头像 李华
网站建设 2026/7/2 5:27:03

Dify开发实战:从零基础到项目实战

目录第一部分&#xff1a;思想与基石——万法归宗&#xff0c;筑基问道第1章&#xff1a;AI 应用的哲学——从“调用模型”到“构建系统”1.1 思维范式转换&#xff1a;为什么说 LLM 是新型 CPU&#xff0c;而 Dify 是操作系统&#xff1f;1.2 架构的演进&#xff1a;从简单的 …

作者头像 李华