UNPKG

@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) 1 kB
import{useState as e,useMemo as r,useCallback as t}from"react";import a 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:u,req:s,params:d,ready:g=!0,simple:l=!1,paging:c=!1,swrConfig:f}=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===g)return null;let e={};return e=c?{...h,...y,...d}:d,[u,e]},[h,c,d,g,u,y]),w=r(()=>{const e={revalidateOnFocus:!1};return{...l?{...e,...o}:e,...f||{}}},[l,f]),I=a(S,t(async e=>s(e[1]),[s]),w),P=t(e=>{O(e),v(p)},[p]);return r(()=>{const e={key:S,get data(){return I.data},get error(){return I.error},get isLoading(){return I.isLoading},get isValidating(){return I.isValidating},refresh:I.mutate};return c?{...e,pageInfo:h,searchInfo:y,onSearch:P,setPage:v,setSearch:O}:e},[S,P,h,c,y,I])}export{n as DEFAULT_PAGE,o as SIMPLE_CONF,i as default};