Skip to content

useThrottleEffect

作用

为 useEffect 增加节流的能力。

原理

通过调用 lodashthrottle 方法来实现的。依赖于 useThrottleFn

源码

ts
import { useEffect, useState } from 'react'
import type { DependencyList, EffectCallback } from 'react'
import type { ThrottleOptions } from '../useThrottle/throttleOptions'
import useThrottleFn from '../useThrottleFn'
import useUpdateEffect from '../useUpdateEffect'

function useThrottleEffect(
  effect: EffectCallback,
  deps?: DependencyList,
  options?: ThrottleOptions
) {
  // 设置flag标识,只有flag改变才会执行useUpdateEffect中的effect
  const [flag, setFlag] = useState({})

  // 用来处理函数节流的 Hook
  const { run } = useThrottleFn(() => {
    setFlag({})
  }, options)

  useEffect(() => {
    return run()
  }, deps)

  // flag依赖项改变时,执行effect
  useUpdateEffect(effect, [flag])
}

export default useThrottleEffect

如有转载或 CV 的请标注本站原文地址