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 }; };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

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

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

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

USB-Serial Controller D驱动下载前的设备识别方法

如何精准识别并解决“USB-Serial Controller D”驱动难题 你有没有遇到过这样的情况&#xff1a;把一条看似普通的USB转TTL线插到电脑上&#xff0c;设备管理器却只显示一个孤零零的“ USB-Serial Controller D ”&#xff0c;既没有COM口&#xff0c;也无法通信&#xff1f…

别把希望交给魔法:一份清醒的健康指南

别把希望交给“魔法”&#xff1a;一个普通人该如何做出清醒的健康选择一、 饭桌上的“灵魂拷问”国庆回老家&#xff0c;饭桌上我爸突然神神秘秘地掏出一个宣传单&#xff0c;问我&#xff1a;“儿子&#xff0c;你搞技术的懂得多&#xff0c;你帮我看看这个‘量子能量袜’&am…

三菱FX3U 16仓位配方程序开发记录

三菱FX3U&#xff0c;用ST语言与梯形图&#xff0c;混合编写的16仓位的配方程序&#xff0c;程序大小约12984步&#xff0c;可以配1到16种不同的产品&#xff0c;16种配方可以根据自己的需求随意设置配方数量与产品数量&#xff0c;可以用条形码设置配方数据与生产数量&#xf…

Scarab模组管理器:新手玩家如何3步解决空洞骑士模组安装难题

Scarab模组管理器&#xff1a;新手玩家如何3步解决空洞骑士模组安装难题 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为安装空洞骑士模组而头疼&#xff1f;手动…

实战Java微信小程序商城:一套代码玩转多端SaaS架构

Java微信小程序商城源码&#xff0c;Java微信开发框架源码&#xff0c;saas模式&#xff0c;前后端分离小程序商城源码 需要看演示的&#xff0c;咨询客服。 使用高性能的Java语言开发&#xff0c;采用目前流行的微服务前后端分离框架&#xff0c;拥有完整的后台&#xff0c;小…

Qwen All-in-One实战:情感分析与智能对话一体化解决方案

Qwen All-in-One实战&#xff1a;情感分析与智能对话一体化解决方案 1. 引言 1.1 业务场景描述 在当前AI应用快速落地的背景下&#xff0c;越来越多的轻量级服务需要部署在资源受限的边缘设备或仅配备CPU的服务器上。典型的应用如客服机器人、用户反馈分析系统等&#xff0c…

Unity游戏多语言本地化终极指南:XUnity.AutoTranslator完全解析

Unity游戏多语言本地化终极指南&#xff1a;XUnity.AutoTranslator完全解析 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为Unity游戏出海的语言障碍而烦恼吗&#xff1f;XUnity.AutoTranslator作为…

基于形态学的权重自适应图像去噪:MATLAB数字图像处理探索

基于形态学的权重自适应图像去噪 MATLAB数字图像处理 基于形态学的权重自适应图像去噪 代码工程目录及运行截图如下在数字图像处理的领域中&#xff0c;图像去噪是一项至关重要的任务&#xff0c;它能帮助我们从被噪声污染的图像中恢复出清晰的原始信息。今天咱们就来聊聊基于形…

组态王条件触发数据记录,记录数据后,条件触发存储到excel表格,存储文件名为出发时的年月日时分秒

组态王条件触发数据记录&#xff0c;记录数据后&#xff0c;条件触发存储到excel表格&#xff0c;存储文件名为出发时的年月日时分秒&#xff0c;存储位置调用excel表格到报表控件展示&#xff0c;全脚本自动实现在工业自动化监控场景中&#xff0c;组态王的触发式数据记录经常…

Modbus TCP转RTU串口通讯:基于Arduino的源码及资料包

Modbus TCP协议转RTU串口通讯 TCP转RTU 程序里包含了常用命令的处理&#xff0c;源码采用arduino 开发环境。 资料里有开发环境&#xff0c;说明文件 最好有一定的8266基础。 一键智能配网&#xff0c;永久记忆&#xff0c;断电重启自动连接wifi。 只提供源代码&#xff0c;相…

电动汽车Simulink仿真模型的奇妙世界

电动汽车 simulink仿真模型&#xff0c; 可进行整车动力性仿真测试&#xff08;最高车速&#xff0c;最大爬坡&#xff0c;加入时间)和NEDC工况能耗测试&#xff08;电耗)。 由驾驶员模型、VCU控制制模型、电机 电池系统模型(电机系统和电池系统已根据供应商提供的方案数据进行…

想让AI声音更像人?试试这个基于CosyVoice2的二次开发项目

想让AI声音更像人&#xff1f;试试这个基于CosyVoice2的二次开发项目 1. 引言&#xff1a;语音合成的下一个突破点 在人工智能技术快速发展的今天&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09;已经从简单的“能说”走向了“说得像人”。传统的TTS系统往往…

Elasticsearch客户端工具自动化运维脚本应用实例

用代码管好你的Elasticsearch&#xff1a;一个Python脚本的运维实战 凌晨三点&#xff0c;你被一条告警惊醒&#xff1a;“集群状态变红&#xff0c;大量分片未分配。” 登上Kibana查看&#xff0c;发现是某台节点磁盘爆了&#xff0c;几十个索引的主分片无法恢复。而更糟的是…

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

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

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

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

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

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

基于模型预测的三相整流器MATLAB仿真模型研究

三相整流器MATLAB仿真 图中为基于模型预测的三相整流器仿真模型最近在搞三相整流器的仿真&#xff0c;发现模型预测控制&#xff08;MPC&#xff09;真是个好东西。传统的PWM控制虽然稳定&#xff0c;但遇到负载突变时总感觉响应慢半拍。这次用MATLAB搭了个预测控制的整流器模型…

机器学习 - 自动化工作流

摘要&#xff1a;本文介绍了机器学习管道&#xff08;Pipeline&#xff09;的概念及其在数据科学工作流中的重要性。管道通过标准化流程实现从数据摄入到模型部署的全过程自动化&#xff0c;包含数据准备、模型训练、评估和再训练等关键环节。文章分析了数据质量、可靠性和可访…