ahooks的useRequest
今天在项目中浅用了一下ahooks中的useRequest,发现这个自定义hook确实挺好用,就想多研究研究,而且官方的实现思路和代码都很清晰很值得学习。想把自己的学习的成果记录下来。
用法
我在项目中是这样使用的,useRequest的传参是一个函数,useRequest执行时机应该和useEffect一样,自动执行这个函数,函数的返回值必须是promise。返回值是一个对象,里面有data,error,loading,run等属性。因为需要手动控制所以设置了manual = true,这样 useRequest 不会默认执行,需要通过 run 或者 runAsync 来触发执行。并且加上了防抖debounceWait,避免重复触发
这一步是我手动调用的写法,我这里用的是runAsync,所以我需要自己捕获异常,
功能:
const withLoadingDelayAction = useRequest(getUrlStatus, {
useDebouncePlugin, // 防抖
useLoadingDelayPlugin, // 延迟loading的状态
usePollingPlugin, // 轮训
useRefreshOnWindowFocusPlugin, // 窗口聚焦时重新请求
useThrottlePlugin, // 节流
useAutoRunPlugin, // 根据ready的变化自动请求
useCachePlugin, // 缓存
useRetryPlugin, // 错误重试
});
当某一个state值变化时,触发这个异步执行:
const { data, loading } = useRequest(() => getUrlStatus(userId), {
refreshDeps: [userId],
});