5e-hooks 中文文档教程

发布于 4年前 浏览 32 更新于 3年前

自定义hook库

useResetAction

当页面离开时触发

无返回值

const resetState = () => {
    setAge(0)
    setValue({})
}

useResetAction(resetState)

// ---> WillUnmount

useMount

// 初始化逻辑
const initParams = () => {
  //xxxx
}

useMount(initParams) // 首次进入页面的时候执行一次, 无副作用, 内部禁止掉了

ps. 隔离副作用 hook ---> didMount

useDebounce

指定函数内触发

// run: 执行 cancel: 取消 fn 是你需要防抖的函数  options是触发条件
// 一般cancel 比较少去使用

...
const options = {
  isImmediate: true,       // 是否是立即执行
  delayTime: 1000          // 延迟 or 执行
}
const [run, cancel] = useDebounce(fn, options)
const [value, setValue] = useState('')

// 频繁触发的逻辑
const requestStorage = async () => {
  const res = await api.saveValue(params)
  ...  
}

const changeValue = (e: any) => {
  setValue(e.target.value)
  run(requestStorage)
}

<Input onChange={changeValue} value={value} />

...

useThrottle

const [run] = useThrottle(fn, {delayTime: 1000})

useSessionStorage

const [value, saveValue] = useSessionStorage('jb')
...

useOnresize

const width = useOnResize(time)

time: 内部集成了防抖逻辑, 是延迟输出的时间

useLocalStorage

const [value, saveValue] = useLocalStorage('jb')
...

TODO

useToggle

github的地址

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文