@wanp/use-swr-data
Version:
use-swr-data is a React hook that simplifies data fetching and caching using SWR (stale-while-revalidate) strategy.
2 lines (1 loc) • 918 B
JavaScript
import{useState as e,useMemo as r,useCallback as a}from"react";import t from"swr";export*from"swr";const n={pageNum:1,pageSize:10},o={revalidateOnMount:!0,revalidateOnFocus:!1,revalidateOnReconnect:!1,shouldRetryOnError:!1,dedupingInterval:500};function i(i){const{reqKey:d,req:s,params:u,ready:l=!0,simple:f=!1,paging:c=!1,swrConfig:g}=i,p="defaultPage"in i&&i.defaultPage||n,m="defaultSearch"in i?i.defaultSearch:void 0,[h,v]=e(p),[y,O]=e(m),S=r(()=>{if(!1===l)return null;let e={};return e=c?{...h,...y,...u}:u,[d,e]},[h,c,u,l,d,y]),w=r(()=>{let e={revalidateOnFocus:!1};return g&&(e=g),f&&(e={...o,...e}),e},[f,g]),{data:I,isLoading:L,error:P,mutate:k}=t(S,async e=>s(e[1]),w),q=a(e=>{O(e),v(p)},[p]);return c?{key:S,data:I,error:P,isLoading:L,refresh:k,pageInfo:h,searchInfo:y,onSearch:q,setPage:v,setSearch:O}:{key:S,data:I,error:P,isLoading:L,refresh:k}}export{n as DEFAULT_PAGE,o as SIMPLE_CONF,i as default};