React Hooks—— context hooks

什么是Hooks

Hooks从语法上来说是一些函数。这些函数可以用于在函数组件中引入状态管理和生命周期方法。

React Hooks的优点

  1. 简洁
    从语法上来说,写的代码少了
  2. 上手非常简单
    • 基于函数式编程理念,只需要掌握一些JavaScript基础知识
    • 与生命周期相关的知识不用学,react Hooks使用全新的理念来管理组件的运作过程
    • 与HOC相关的知识不用学,React Hooks能够完美解决HOC想要解决的问题,并且更可靠
    • Mobx取代了Redux做状态管理
  3. 代码复用性更好
  4. 与Typescript结合更简单

React Hooks的缺点

  1. 状态不同步
    在异步操作的函数中访问的状态还是原来的状态的值
  2. useEffect依赖问题
    当useEffect依赖的数据变多后会导致频繁触发

React Hooks的注意事项

  1. 命名规范
    自定义Hooks的命名一律使用use作为前缀,形如:useXXX
  2. 仅在最外层调用React Hooks
  3. 仅从react函数中调用react Hooks
    在自定义Hooks或者组件中调用Hooks
useContext

Context是一种对其所包含组件树提供全局共享数据的技术,而useContext是在React Hooks对Context进行的封装。它可以帮助我们跨越组件层级直接传递函数,实现数据共享,让使用变得简单。

createContext

createContext(initialValue):

  • initialValue:initialValue是context的初始值

useContext返回的对象包含两个属性:

  • Provider:提供者,是React组件使用Provider标签包裹后的组件,自身及其后代都可以访问Context的值
  • Consumer:消费者,是React组件使用Consumer包裹后,可以使用render props的方式渲染内容,获取context的值。
const MyContext = React.CreateContext()function Demo() {const [userName,setUserName]=useState('');const {Provider,Consumer} = useContext(MyContext);return <><Provider value={userName}><B></B></Provider></>
}function Child {const context = useContext(MyContext);render(){return <><C></C></>}
} 
function C {return <><Consumer>{value => `姓名是${value.userName}`}</Consumer></>
}

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

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

相关文章

Docker之Dockerfile搭建lnmp

目录 一、搭建nginx ​编辑 二、搭建Mysql&#xff08;简略版&#xff09; 三、搭建PHP 五、补充 主机名ip地址主要软件mysql2192.168.11.22Docker 代码示例 systemctl stop firewalld systemctl disable firewalld setenforce 0docker network create --subnet172.18.…

OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击

作者&#xff1a;gentle_zhou 原文链接&#xff1a;OWASP Top 10漏洞解析&#xff08;3&#xff09;- A3:Injection 注入攻击-云社区-华为云 Web应用程序安全一直是一个重要的话题&#xff0c;它不但关系到网络用户的隐私&#xff0c;财产&#xff0c;而且关系着用户对程序的新…

十进制分钟转时间类型

/*** 十进制分钟转时间类型** param decimalTime 十进制分钟数*/public static String tenToDate(int decimalTime) {// int decimalTime 3695; // 十进制时间数int hours decimalTime / 3600;int minutes (decimalTime % 3600) / 60;int seconds decimalTime % 60;Decimal…

Scala第十八章节

Scala第十八章节 scala总目录 文档资料下载 章节目标 掌握Iterable集合相关内容.掌握Seq集合相关内容.掌握Set集合相关内容.掌握Map集合相关内容.掌握统计字符个数案例. 1. Iterable 1.1 概述 Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合…

K8S网络原理

文章目录 一、Kubernetes网络模型设计原则IP-per-Pod模型 二、Kubernetes的网络实现容器到容器的通信Pod之间的通信同一个Node内Pod之间的通信不同Node上Pod之间的通信 CNI网络模型CNM模型CNI模型在Kubernetes中使用网络插件 开源的网络组件FlannelFlannel实现图Flannel特点 Op…

23年7/8月前端小结

简历 - C端&#xff0c;技术栈VUE 多次问的问题类型&#xff1a; 设计模式&#xff0c;有哪些&#xff0c;遇到哪些&#xff0c;用过哪些&#xff0c;实现一个原型链&#xff0c;说&#xff0c;或者出题给结果&#xff08;比如new实例&#xff0c;改原型各种&#xff09;闭包…

软考 系统架构设计师系列知识点之软件架构风格(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件架构风格&#xff08;1&#xff09; 这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此…

pyppeteer 基本用法和案例

特点 自带chromium 不用自己下载也可以下载&#xff0c;比较省事.比selenium好用 可异步调用 简介 一. pyppeteer介绍 Puppeteer是谷歌出品的一款基于Node.js开发的一款工具&#xff0c;主要是用来操纵Chrome浏览器的 API&#xff0c;通过Javascript代码来操纵Chrome浏览器&am…

解密人工智能:决策树 | 随机森林 | 朴素贝叶斯

文章目录 一、机器学习算法简介1.1 机器学习算法包含的两个步骤1.2 机器学习算法的分类 二、决策树2.1 优点2.2 缺点 三、随机森林四、Naive Bayes&#xff08;朴素贝叶斯&#xff09;五、结语 一、机器学习算法简介 机器学习算法是一种基于数据和经验的算法&#xff0c;通过对…

Ubuntu 22.04 安装系统 手动分区 针对只有一块硬盘 lvm 单独分出/home

自动安装的信息 参考自动安装时产生的分区信息 rootyeqiang-MS-7B23:~# fdisk /dev/sdb -l Disk /dev/sdb&#xff1a;894.25 GiB&#xff0c;960197124096 字节&#xff0c;1875385008 个扇区 Disk model: INTEL SSDSC2KB96 单元&#xff1a;扇区 / 1 * 512 512 字节 扇区大…

【科研工具】-论文相关

科研工具 1 论文检索2 论文阅读3 论文写作4 论文发表 1 论文检索 计算机类英文文献检索数据库DBLP: 只有论文基本信息&#xff08;标题、作者等&#xff09;&#xff1b;下载论文&#xff1a;知网\IEEE\ACM\SCI-Hub等&#xff0c;记得创建文件夹&#xff08;检索词条、日期等&…

OpenAI重大更新!为ChatGPT推出语音和图像交互功能

原创 | 文 BFT机器人 OpenAI旗下的ChatGPT正在迎来一次重大更新&#xff0c;这个聊天机器人现在能够与用户进行语音对话&#xff0c;并且可以通过图像进行交互&#xff0c;将其功能推向与苹果的Siri等受欢迎的人工智能助手更接近的水平。这标志着生成式人工智能运动的一个显著…

websocket拦截

python实现websocket拦截 前言一、拦截的优缺点优点缺点二、实现方法1.环境配置2.代码三、总结现在的直播间都是走的websocket通信,想要获取websocket通信的内容就需要使用websocket拦截,大多数是使用中间人代理进行拦截,这里将会使用更简单的方式进行拦截。 前言 开发者工…

Unity2D创建帧动画片段

文章目录 概述为角色创建动画Animator组件创建动画片段状态转移 其他文章 概述 动画是游戏中一种使对象表现出运动或变换的方式。当涉及到动画时&#xff0c;我们通常就会用到Animator组件。它允许我们在Unity编辑器中创建、管理和控制这些动画&#xff0c;并将其应用于游戏对…

JTAG/SWD接口定义

目录 1. ST-Link接口定义 2. ULINK2接口定义 为方便查阅&#xff0c;将ST-LINK和ULINK的JTAG和SWD接口定义总结如下&#xff1a; 1. ST-Link接口定义 Pin no. ST-LINK/V2 connector (CN3) ST-LINK/V2 function Target connection (JTAG) Target connection (SWD) 1 VA…

移动硬盘数据恢复怎么做?盘点4种实用恢复方法!

“为了存储我的照片和视频&#xff0c;我特地买了一个大容量的移动硬盘。但是不知道我在导照片的时候是不是误操作了&#xff0c;很多照片和视频都丢失了&#xff0c;我应该怎么恢复移动硬盘里的数据呀&#xff1f;” 移动硬盘方便携带且容量比较大&#xff0c;逐渐成了很多朋友…

2023-10-03 VsCode诡异消失事件

VsCode诡异消失事件 前言一、排查问题二、原因分析三、其它可能不好的倾向四、一些补救措施总结 前言 今天打开电脑, 习惯性的打开VsCode, 收到错误消息, 该快捷方式所指向的项目Code.exe已经更改或移动, 因此该快捷方式无法正常工作. 是否删除该快捷方式. 一、排查问题 打开…

【数据挖掘】2017年 Quiz 1-3 整理 带答案

目录 Quiz 1Quiz 2Quiz 3Quiz 1 Answer Problems 1-2 based on the following training set, where A , B , C A, B, C A,B,</

聚焦酷开科技智能大屏OS Coolita,打造智能推荐服务能力全景

2023年9月18日—22日&#xff0c;科学和教育计算机协会The Association for Computing Machinery&#xff08;ACM&#xff09;在新加坡举办了为期5天的ACM RecSys 2023&#xff0c;云集了各大品牌的科技巨头技术人员&#xff0c;还有中外各大高等学府学者参与其中&#xff0c;共…

matlab 使用激光雷达检测、分类和跟踪车辆

目录 1、算法概述2、加载数据3、地平面分割4、语义分割5、聚类和边界盒拟合6、可视化设置7、循环遍历数据8、面向跟踪的包围盒9、 总结10、 支持功能11、 参考</