useContext 和 useReducer语法讲解

useContext 和 useReducer

useContext 和 useReducer 传递state + dispatch, 模拟redux

useContext 用法
// App.tsx
const UserContext = React.createContext({ name: '' })
function App() {return (<UserContext.Provider value={{ name: 'jack' }}><div><p>欢迎学习React后台课程</p><Child1 /></div></UserContext.Provider>)
}function Child1() {return (<div><p><span>Child1</span></p><p><Child2 /></p></div>)
}function Child2() {const { name } = useContext(UserContext)return <span>Child2{name}</span>
}

createContext 创建上下文对象,传递全局变量,在底层任意一个子组件可使用 useContext 获取该上下文对象,同时获取里面定义的全局变量值,进行渲染。

解决问题

当组件嵌套层级过多时,传递属性不方便。

useReducer 用法
const [state, dispatch] = useReducer(reducer, initialArg);
useReducer 案例

const initialState = {count: 0};function reducer(state, action) {switch (action.type) {case 'increment':return {count: state.count + 1};case 'decrement':return {count: state.count - 1};default:throw new Error();}
}function Counter() {const [state, dispatch] = useReducer(reducer, initialState);return (<>Count: {state.count}<button onClick={() => dispatch({type: 'decrement'})}>-</button><button onClick={() => dispatch({type: 'increment'})}>+</button></>);
}

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

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

相关文章

Openfire on Centos7

学习一下linux&#xff0c;装备 1&#xff09;centos 最小安装。&#xff08;找抽的节奏&#xff09; 2&#xff09;必备 oepnssh yum install openssh-server.x86_64 3&#xff09;配置网络。打开 /etc/sysconfig/network-scripts/ifcfg-* 网卡配置。 TYPEEthernet #改为s…

python matplotlib画图改变图标题和坐标轴标题的字体大小

import matplotlib.pyplot as pltplt.title(Input,fontdict{weight:normal,size: 20}) #改变图标题字体 plt.xlabel(Time, fontdict{weight: normal, size: 13})#改变坐标轴标题字体

JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)

第3节 IO&#xff08;上&#xff09; 一、File类与文件基本操作 在程序中经常需要用到文件的操作&#xff0c;Java有专门的类来进行文件的操作——File类。 1.1 File类概述 它是对文件和目录路径名的抽象表示。 即它本身不是一个文件&#xff0c;只是一个抽象表示&#xff…

学习新技能时,大脑在如何发生改变?

来源&#xff1a;中国生物技术网众所周知&#xff0c;无论是一项运动、一种乐器还是一门手艺&#xff0c;掌握一项新技能都是需要花费时间并进行训练的。虽然我们都知道健康的大脑能够应付的来&#xff0c;但是为了开发出新行为大脑如何发生改变科学家们对此仍知之甚少。近日&a…

1-4-14:计算邮资

描述 根据邮件的重量和用户是否选择加急计算邮费。计算规则&#xff1a;重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分&#xff0c;每500克加收超重费4元&#xff0c;不足500克部分按500克计算&#xff1b;如果用户选择加急&#xff0c;多收5元。 输入输入一行&a…

JavaSE——IO(下)(Properties类、序列化与反序列化)

第3节 IO&#xff08;下&#xff09; 一、.properties文件与Properties类 1.1 .properties文件介绍 .properties文件一种属性文件&#xff0c;以键值对 的格式存储内容&#xff0c;在Java中可以使用Properties类来读取这个文件&#xff0c;一般来说它作为一些参数的存储&…

MATLAB获得子图位置

a1subplot(9,11,1) get(a1,position) %[0.1300 0.8577 0.0547 0.0673] %前面两个数值分别代表子图离左边框和下边框的距离&#xff0c;后面两个数值是子图的长和宽

VS调试dll详细过程记录

VS调试dll详细过程记录 qianghaohao(孤狼) 前言&#xff1a;在我们写的程序中有时候调用dll&#xff0c;并且需要跟踪dll中的函数&#xff0c;此时直接调试调用dll的工程是无法跳进dll的函数的&#xff0c;此时我们可以启动dll工程 来跟踪程序的走向。注意&#xff1a;要有…

谁在真正领跑 5G:技术创新和标准

来源&#xff1a;云头条5G是包括美国总统特朗普在内的所有人都在谈论的新技术。所以&#xff0c;每家公司自然都想谈论5G以及如何领跑这个领域。然而现实情况是&#xff0c;移动5G是一项涵盖甚广的无线标准&#xff0c;它改变了我们对蜂窝通信的认识&#xff0c;并前所未有地拓…

JavaSE——XML与JSON(语法格式、解析内容)

第6节 XML与JSON 一、XML 1.1 XML简介 XML全称为可扩展标记语言&#xff08;extensible Markup Language&#xff09; 。 特性&#xff1a; xml具有平台无关性&#xff0c;是一门独立的标记语言&#xff1b; xml具有自我描述性。 用途&#xff1a; 网络数据传输 数据存…

matlab画图设置

设置坐标轴显示范围&#xff1a; xlim([0,150]) 设置坐标轴显示的刻度&#xff1a; set(gca, XTicklabel,[0,50,100,150] ); 不显示坐标轴刻度&#xff1a; set(gca, YTicklabel,[] ); 设置坐标轴标题及旋转角度&#xff1a; ylabel(yl,Rotation,0) 设置字体大小 se…

root 链接ftp

could not change active booleans:Inalid boolean 2014-11-02 16:05:34分类&#xff1a; Linux could not change active booleans:Inalid boolean [rootumboyserver vsftpd]# setsebool allow_ftpd_full_access 1[rootumboyserver vsftpd]# setsebool allow_ftpd_use_cifs 1…

三大阶段,四大领域,详解你不知道的AIoT!

AIoT即AIIoT&#xff0c;指的是人工智能技术与物联网在实际应用中的落地融合。目前&#xff0c;越来越多的行业及应用将AI与IoT结合到了一起&#xff0c;AIoT已经成为各大传统行业智能化升级的最佳通道&#xff0c;也是未来物联网发展的重要方向。来源&#xff1a;物联网智库AI…

Spring的@Resource注解报java.lang.NoSuchMethodError

见&#xff1a;https://www.cnblogs.com/xiaoguoniu/p/13504601.html 少了javax的包

word修改公式中的部分字体

有时候只想修改word公式中的部分字体大小&#xff0c;方法是先将公式变成普通文本格式再进行修改。

青春谁不糊涂3

1、生命的意义是不稳健&#xff0c;当人们多么辉煌&#xff0c;但是&#xff0c;当它逐渐凋落&#xff0c;有明显她的人&#xff0c;她静静地在一旁独自&#xff0c;讲话。不语。屏息中交换生命的本真。任凭四周的嘈杂与纠纷。2、靠幽默与搞笑出道的人&#xff0c;不到功成名就…

人类为什么会同情机器人,是否需要禁止虐待机器人

6月14日&#xff0c;一段形似波士顿动力机器人Atlas反击人类的视频在网络热传&#xff0c;制作这款视频的团队Corridor Digital&#xff0c;是一家位于洛杉矶的美国制作工作室。自2010年以来&#xff0c;一直以制作与流行文化相关的病毒在线短片视频而闻名。Corridor Digital由…

dubbo学习总结——思维导图

Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC框架&#xff0c;可以和Spring框架无缝集成&#xff0c;2018年阿里巴巴把这个框架捐献给了apache基金会 什么是RPC&#xff1f; RPC全称为remote procedure call&#xff0c;即远程…

python为字体添加上下标

添加上标&#xff1a;^ 添加下标&#xff1a;_ 举例&#xff1a; import numpy as np import matplotlib.pyplot as pltt np.linspace(0, 10, 1000) y np.sin(t) plt.plot(t, y) plt.xlabel(a/${m_2}$,fontdict{weight: normal, size: 15}) plt.show() 效果&#xff1a; …