# useRequest
网络请求函数
// service是一个异步请求函数,返回promise
const { data, error, loading } = useRequest(service)
// 举例
function getName() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('name')
}, 3000)
})
}
// 使用
// 初始化时,自动执行一次改异步函数
const { data, error, loading } = useRequest(getName)
if (error) {
return <div>error</div>
}
if (loading) {
return <div>loading</div>
}
return <div>{data}</div>
// 也可以配置手动触发
// run的执行结果要在参数onSuccess或者onError去执行
// runAsync需要手动then或者catch
const { loading, run ,runAsync } = useRequest(service, {
// 手动执行,则返回run等参数
manual: true,
// 给run的回调用
onSuccess: (result, params) => {},
onError: (error) => {}
})
run()
// 或者
runAsync().then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
})
其他配置项
- onBefore:请求之前
- onSuccess
- onError
- onFinally
- refresh:重复上一次请求
- refreshAsync:类似runAsync
- cancel:忽略promise的结果
# useMount
组件挂载执行,useMount + []依赖实现
# useUnmount
组件卸载执行,useMount返回函数 + []依赖实现
# useUpdate
实现setState更新效果,其实内部也是用一个useState来实现的
# useLatest
返回引用数据的最新状态,其实就是ref
# useToggle
开关切换,返回一个toggle
# useDebounce
防抖,不多说了,短时间内多次触发,只执行最后一次;场景input输入关键字搜索,只对最后一次输入做匹配查询
# useThrottle
节流,频繁操作下,每一间隔执行一次;