| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> React钩子 -> 正文阅读 |
|
[JavaScript知识库]React钩子 |
1.项目导入react
2.使用对应各种钩子目前项目中常用的有: useReducer useContext useMemo 我一般将其一起引用(根据个人需求引入)
1.useState首先进行声明
其中第一个为使用的定义值,第一个为对值做赋值使用的函数,后续的useState括号中间为此值的初始化值,可以定义为字符,数组,对象都可以 赋值
当声明的值进行变化后整改页面也会进行刷新,但是由于react的diff算法的原因只是引用该值的组件进行重新渲染,不过我们把这个值传给一个组件函数时候,值变化后就需要渲染整个组件函数,非常耗费资源,这个时候就需要加上memo到组件的导出声明处
这个时候就只会更新该组件内部的引用改组件的值了 2.useEffect常用的两种情况 初始化使用
值监控(当bizTypeValue发生改变的时候触发)
注意: 当在方法体执行useState的set方法时,值的结果是不能被正确打印的,因为钩子函数都是异步的,如
3.useRef由于现在公司基本都是用react的函数式编程,而ref是不能直接定义到函数式组件中的,这个时候就需要使用forwardRef 首先进行定义
组件使用
函数式组件定义使用
我们在构建一个页面的时候会经常遇到父组件给子组件或者是子传父等常见的值传递场景,如果学过vue我们通常使用evenbus来解决这个问题,比较复杂的就是用vuex去解决,而react中,我们使用就是props来进行父传子,ref进行子传父的,而复杂的通常使用useContext和UseReducer配合使用解决 父传子
取值
这个时候就会打印出 ‘init’ 的字符 子传父 入值
取值
我们就可以从父组件取到对应的button的全部信息了 不过有时候我们需要读取多个组件或者需要多个对象怎么办,我们可以将我们需要的值进行打包然后整个传给ref就可以了
上面是将form表单对像传过去了,当然我们也可以在getValues函数中返回更多参数
4.useReducer useContext这次对两个钩子一起介绍,一般也是一起进行使用的 useContext: 父组件下的所有子组件(包括子子组件)都可以使用被传输的值,不需要通过props一层层的往下传 useReducer: useReducer 是 useState 的替代方案,useState 能做到的事,它都能做到,甚至做得更好。useReducer 某种程度上解耦了操作逻辑(action)和后续的行为(一般是 UI 的更新),虽然代码量变多了,但是看起来更加整洁,并且配合useContext实现值的多层传递,实现各个组件间的值互通 首先进行定义
使用
上面可以看出,当我们使用useContext和useReducer的联合使用从而达到值在多个组件层级中相互传递,达到和vueX差不多的效果 5.useMemo我们可以将useEffect的精细版本,当indicatorSelect进行赋值后并没有发生改变后,useMemo会将上次的值直接返回,有点缓存感觉,当然也可以如上面介绍的,对组件函数进行使用,减少函数组件中组件的更新,从而到达减少系统的开销
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 17:48:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |