useEffect:dom完成渲染后执行

  • 不传参数,每次都会执行
    传空的依赖[],只会执行一次
    有依赖,依赖项变化会执行

useEffect实现动画效果

import { useEffect, useRef, useState } from "react"const App = () => {const [, setCount] = useState({})const refDiv = useRef()useEffect(() => {console.log('执行useEffect')setTimeout(() => {refDiv.current.style.transform = 'translateX(150px)'refDiv.current.style.transition = 'all .9s'}, 1000)// 清理函数 要显示返回的动画,上面的函数应延迟一段执行// 否则太快回到150px位置,看不到效果return () => {console.log('执行清理函数')refDiv.current.style.transform = 'translateX(0px)'refDiv.current.style.transition = 'all .9s'}})const styleObj = {width: '50px',height: '50px',background: 'skyblue'}return (<><div style={styleObj} ref={refDiv}></div><button onClick={() => setCount({})}>click</button></>)
}
export default App

useLayoutEffect

  • componentDidMountcomponentDidUpdate调用阶段一致
import { useEffect, useLayoutEffect, useRef, useState } from "react"const App = () => {const [, setCount] = useState({})const refDiv = useRef()useLayoutEffect(() => {console.log('useLayoutEffect渲染前执行')// 若不延迟 在useLayoutEffect看不到移动,而是初始就在150的位置setTimeout(() => {refDiv.current.style.transform = 'translateX(150px)'refDiv.current.style.transition = 'all .9s'}, 1000)return () => {console.log('执行清理函数')refDiv.current.style.transform = 'translateX(0px)'refDiv.current.style.transition = 'all .9s'}})const styleObj = {width: '50px',height: '50px',background: 'skyblue'}return (<><div style={styleObj} ref={refDiv}></div><button onClick={() => setCount({})}>click</button></>)
}
export default App

useDebugValue

  • 用于在React开发者工具中显示自定义hook的标签

自定义hook

import { useEffect, useState } from 'react'
// 自定义hook
const useCount = params => {const [count, setCount] = useState(0)useEffect(() => {document.title = `第${count}次点击`})return [count, setCount]
}
const Foo = () => {const [count, setCount] = useCount(0)useEffect(() => {console.log('Foo useEffect')})return (<><h1>{count}</h1><button onClick={() => setCount(count + 1)}>click</button></>)
}
const App = () => {return <Foo />
}
export default App

增加提示效果

7 useLayoutEffect、useDebugValue相关推荐

  1. Hooks的基本介绍

    1 什么是Hooks Hook 是 React 16.8 的新增特性, 它可以让函数式组件拥有类组件特性[如:保存自己的状态,有自己的生命周期方法] 基础的Hook:useState.useEffec ...

  2. React学习笔记(八)--- HooK

    一.简介 ​ 在之前的学习中,我们了解到只有类组件中才能使用 state,函数组件是无法使用的.但Hook的出现,改变这种情况,Hook是React 16.8 版本的新增特性,可以让我们在函数组件中使 ...

  3. 视频教程-React Hooks 案例详解(React 进阶必备)-其他

    React Hooks 案例详解(React 进阶必备) Leo 1978年8月生,河北石家庄人. 曾任职中软股份. 计算科学导师: 刘坤起博士. 开发的<电商分销系统>获得淘宝Top10 ...

  4. 20210226某体育公司前端面试总结

    目录 讲下react生命周期 js的数据类型 什么是闭包 Vue和react的区别 性能优化 输入URL到页面渲染的整个流程 如何处理跨域问题 谈谈你对原型链的理解 重排和重绘 你做过一些什么基础的搭 ...

  5. react全家桶实战(千峰教育)

    说明:本笔记为本人基于千锋教育2022版React全家桶教程_react零基础入门到项目实战完整版的学习笔记,知识点不清或不全,可以到视频教程中学习 文章目录 一.安装create-react-app ...

  6. 专利审查指南(2010)

    专利审查指南(2010) http://www.chinalaw.gov.cn/article/fgkd/xfg/gwybmgz/201004/20100400253035.shtml来源国务院法制办 ...

  7. 湖南省中职学业水平测试试题信息技术

    试题: 1.按照指法要求,击打空格键,应使用( ). A.左手和右手的食指,因食指最灵活 B.左手或右手的拇指 C.左手或右手的中指 D.左手或右手的无名指 2.显示器的清晰度是由( )决定的. A. ...

  8. Photoshop入门与进阶实例:1.4 图层的概念和基本操作

    1.认识图层 图层功能被誉为Photoshop的灵魂,这个比喻一点也不夸张!图层在我们使用Photoshop进行图像处理中,具有十分重要的地位,也是最常用到的功能之一.掌握图层的概念是我们学习Phot ...

  9. 2023年你最值得了解的信息技术-AI篇(二)

    20688 北京朗阁信息技术有限公司 企业服务  前沿技术 北京市 mailkey 专注云企业邮件领域的产品,随云服务而生. 未融资 MailKey 是北京朗阁信息技术有限公司(以下简称"朗 ...

最新文章

  1. Executor详细介绍 打造基于Executor的Web服务器
  2. MATLAB 循环子字符串
  3. SpringBoot中的Profile配置的使用
  4. 计算机类专业综合理论模拟试卷1,山东省2011年高等职业教育对口招生计算机类专业理论综合模拟试题(一)...
  5. pip 安装 mysqlclient 报错 Command errored out with exit status 1
  6. matplotlib可视化必知必会富文本绘制方法
  7. Spring学习(24)--- AOP之 Aspect instantiation models(aspect实例模式)特别说明
  8. POJ1011———Sticks
  9. 【渝粤教育】国家开放大学2018年秋季 8660-22T (1)农科化学基础知识 参考试题
  10. 网站SEO优化--Flash站优化方法
  11. PHP 实现文件下载
  12. android微信回调数据,Android 支付回调-1
  13. iweboffice注意事项
  14. 主成分分析在生命科学研究中的应用
  15. 使用 Inkscape 制作电子签名
  16. apple configurator 2 获取appstore ipa包
  17. [MP3]MP3固件持续分享(2019.1.25)
  18. 节能系统优化空调方案
  19. 支持linux浏览器,让 Linux web 浏览器支持 KDE 的 KParts 技术
  20. js室内地图开发_室内地图 JavaScript API

热门文章

  1. css规则可以放在云上,CSS中!important规则的使用方法
  2. python访问序列元素的编号用什么括起来_python-重新编号数组中元素的有效方法...
  3. python3 for_Python3: for 表达式
  4. 【音频处理】离散傅里叶变换
  5. ubuntu下终端提示符设置
  6. 如何寻找无序数组中的第K大元素?
  7. bzoj4919 大根堆
  8. JAVA 框架-Spring-AOP面向切面
  9. C#如何开发多语言支持的Winform程序
  10. Effective C# Item22:使用事件定义外发接口