type
status
date
slug
summary
tags
category
icon
password

useUpadateEffect

  • 何时使用(官方):等同于useEffect但是会忽略首次执行,只在依赖更新时执行
  • 用法:与React.useEffect完全一致
  • 场景:有时父组件会传props到子组件,子组件监听prop变化发起请求更新数据,但是不想第一次进就更新数据,而是当该prop后续变化时才发起请求,此时就适用useUpadateEffect
  • 实现思路:利用 useRef 来暂存是否执行初次渲染的状态isMounted, 若isMounted为true,则执行勾子,若为false则不执行
  • 源码
  • useUpadateLayoutEffect 与 useUpdateEffect同理,唯一不同只是传参不同
 

usePrevious

  • 用法:保存上一次状态的Hook
  • 场景:想要获取状态更新后上一次状态的值时使用
  • 实现思路:利用 useRef 来表示目前的值以及上次的值,若监听的值更新了,则现将目前的值赋值给上次的值并将最新的值赋值给目前的值
  • 参数
    • 参数
      说明
      类型
      默认值
      state
      需要记录变化的值
      T
      -
      shouldUpdate
      可选,自定义判断值是否变化
      (prev: T | undefined, next: T) => boolean
      (a, b) => !Object.is(a, b)
  • 源码
 

useUpdate

  • 用法:强制使组件刷新
  • 场景:想要强制组件重新渲染时使用
  • 实现思路:勾子内部直接return一个update function, 当调用该方法时,会调用勾子触发渲染
  • 源码
 

useLatest

  • 用法:获取某个变量最新的引用
  • 场景:防止闭包时使用
  • 实现思路:利用ref.current始终保证该引用为最新
  • 源码
 

useSize

  • 监听DOM节点尺寸变化的hook
  • 场景:需要获取动态容器高度时使用
  • 实现思路:ref + onResize 获取高宽度
 

useCountDown

  • 用法:实现一个管理倒计时的hook时使用
  • 场景:手机验证码
  • 实现思路:利用ref.current始终保证该引用为最新
  • 源码

useVirtualList

  • 用法:渲染虚拟列表时使用
  • 场景:当需要一次性渲染一个很长列表时
  • 参数
参数
说明
类型
默认值
originalList
包含大量数据的列表
T[]
[]
options
配置项
Options
-
Options
参数
说明
类型
默认值
containerTarget
外面容器,支持 DOM 节点或者 Ref 对象
() => Element | Element | MutableRefObject<Element>
-
wrapperTarget
内部容器,支持 DOM 节点或者 Ref 对象
() => Element | Element | MutableRefObject<Element>
-
itemHeight
行高度,静态高度可以直接写入像素值,动态高度可传入函数
number | ((index: number, data: T) => number)
-
overscan
视区上、下额外展示的 DOM 节点数量
number
返回值
参数
说明
类型
list
当前需要展示的列表内容
{ data: T, index: number }[]
scrollTo
快速滚动到指定 index
(index: number) => void
 
  • 实现思路:
  • 源码:
 
HTML笔记深入useEffect
Loading...
NotionNext
NotionNext
一个普通的干饭人🍚
最新发布
ahooks
2024-2-27
深入useEffect
2023-8-8
CSS笔记
2023-3-29
ES6
2023-3-29
输入URL后发生了什么
2023-3-29
HTML笔记
2023-3-29