React 自定义Hook(挂载完毕、防抖)

React 自定义Hook

重构 生命周期函数——挂载完毕

export const useMount = (callback : Function) => {
  useEffect(() => {
    callback()
  },[])
}

防抖

export const useDebounce = (value:any, delay:number) => {
  const [debouncedValue,setDebouncedValue] = useState(value)
  useEffect(() => {
    // value、delay变化以后,设置一个定时器
    const timeout = setTimeout(() => {
      setDebouncedValue(value)
    }, delay);
    return () => clearTimeout(timeout)
  },[value,delay])

  return debouncedValue
}

外部的引用

const [param, setParam] = useState({
    name:'',
    personId:''
})
const debouncedParams = useDebounce(param,2000)
useEffect(() => {
    fetch(`${apiUrl}/projects?${qs.stringify(cleanObject(param))}`).then(async response => {
        if(response.ok){
            setList(await response.json())
        }
    })
},[debouncedParams])

注意点

命名问题

自定义Hook必须是以use开头,否则useEffect(React自带的Hook)就会报错

原因:在Eslint校验中,如果没有以use开头,就会被辨别为普通的函数,而Hook(不管是自带的Hook还是自定义的Hook)都是不可以在普通函数中运行的

运行条件:

  1. 其他Hook中
  2. 组件中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值