Sunny-117 / js-challenges

✨✨✨ Challenge your JavaScript programming limits step by step

Home Page:https://juejin.cn/column/7244788137410560055

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

实现useRequest

Sunny-117 opened this issue · comments

实现useRequest
const useRequest = (request,options = {}){
    const {debounceWait = 0,throttleWait = 0} = options
    const [loading,setLoading] = useState(false)
    const [error,setError] = useState(null)
    const [data,setData] = useState(null)
    const run = useCallback((params)=>{
        setLoading(true)
        const doRequest = ()=>{
            request(params).then(res=>setData(res)).catch(e=>setError(e))
            .finally(setLoading(false))
        }
        if(debounceWait > 0){
            debounce(doRequest,debounceWait)
        }else if(throttleWait > 0){
            throttle(doRequest,throttleWait)
        }else{
            doRequset()
        }
    }
    ,[request,debounceWait,throttleWait])
    return {loading,run,error,data}
}