当前位置: 首页 > news >正文

react hooks 额外的钩子函数

useMemo 性能优化

减少渲染耗时

记忆值

对象深拷贝

const momoizedValue = useMemo(callback,array)

1.callback 函数 处理计算逻辑

2.array 数组发生改变的时候 useMemo 才会重新执行

返回值是一个记忆值 是callback的返回值

数组变化 记忆值才会返回

const obj1 = {id:"12",name:"jack"}

const obj2 = {id:"14",name:"ben",age:23}

const memoizedValue =useMemo(()=>Object.assign(obj1,obj2),[obj1,obj2])

// 第二个参数是数组 代码obj1改变 或者obj2改变的时候 记忆值才会返回

类似immutable优化

不要在useMemo处理副作用的逻辑

 

useCallback . 性能优化

const momoizedValue = useCallback(callback,array)

//和useMemo 返回值不同 返回值不是callback返回值 是函数本身

得到的是一个函数

useCallback(fn,inputs) 等价于 useMemo(()=>fn,inputs)

const memoizedValue =useCallback(()=>Object.assign(obj1,obj2),[obj1,obj2])

// 调用 memoizedFn().name

 

等价于 useMemo(()=>()=>Object.assign(obj1,obj2),[obj1,obj2]);

 

 

useRef 使用ref对象 返回一个可变的ref对象 current属性被初始化为传递的参数

通过ref对象访问dom

const inputE1 = useRef(null)

// useRef()

const onInput=()=>{

console.log(inputE1.current.value)

}

 

return(

<div>

<input ref = {inputE1} type='text' / >

<button onClick={onInput}>获取input的值</button>

</div>

)

 

// 后面两个钩子用的少

useImperativeMethods

//扩展ref 方便ref 和父组件交互

useLayoutEffect 阻止页面渲染

所有dom变化后同步触发

浏览器绘制前 做一些事情

多数情况用useEffect

 

 

 

 

 

 

 

相关文章:

  • 《程序员》杂志06年2月文章:Flash Lite挑战J2ME
  • CSDN Blog升级公告
  • koa文件上传2
  • 怎样成为一个Flash Lite Developer (开发篇)
  • Chat room help file
  • 小程序 - 使用async出现regeneratorRuntime is not defined错误 不能使用async 和await 的解决方案
  • react willReceiveProps 是深度比较 浅层拷贝 (虽然值变过来了 但是)还是会render 一次 immutable1
  • 怎样成为一个Flash Lite Developer (工具篇)
  • immutable与可变数据 不可变数据
  • 辞职:也要像个君子般离开
  • redux connect 原理解析 传入的mapstate 和mapdispatch connect()第一次执行后返回一个函数 这个函数接收到的参数是一个组件 对组件进行加工返回
  • Flash Lite 与 J2ME 分析比较
  • react dva 复习subscriptions: setup
  • pm2 pm2 --help 使用指南
  • 驳斥一些不看好Flash的观点
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【mysql】环境安装、服务启动、密码设置
  • 2019.2.20 c++ 知识梳理
  • 5、React组件事件详解
  • 安卓应用性能调试和优化经验分享
  • ------- 计算机网络基础
  • 码农张的Bug人生 - 见面之礼
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务入门【系列视频课程】
  • 小而合理的前端理论:rscss和rsjs
  • 怎样选择前端框架
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 1.Ext JS 建立web开发工程
  • # Apache SeaTunnel 究竟是什么?
  • #控制台大学课堂点名问题_课堂随机点名
  • $(selector).each()和$.each()的区别
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (一)u-boot-nand.bin的下载
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Google的Objective-C编码规范
  • (转)为C# Windows服务添加安装程序
  • (转)重识new
  • .NET 4.0中的泛型协变和反变
  • .Net Remoting常用部署结构
  • .net 调用php,php 调用.net com组件 --
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET企业级应用架构设计系列之结尾篇
  • /usr/bin/env: node: No such file or directory
  • @media screen 针对不同移动设备
  • [BZOJ] 2044: 三维导弹拦截
  • [C#] 如何调用Python脚本程序
  • [C#][DevPress]事件委托的使用
  • [c]扫雷
  • [C语言]编译和链接
  • [FFmpeg学习]从视频中获取图片
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [javaSE] 数据结构(二叉查找树-插入节点)