hook-fetch
Version:
A lightweight and modern HTTP request library developed based on the native Fetch API of the browser, providing a user-friendly interface similar to Axios and powerful extensibility.
2 lines • 1.15 kB
JavaScript
import{useRef as e,useState as t}from"react";function n({request:n,onError:r}){let i=e(null),[a,o]=t(!1),s={name:`__react-hook__`,onFinally(){o(!1)}},c=(...e)=>{if(i.current)return i.current;if(i.current=n(...e),!i.current||!(`__injectPlugins__`in i.current))throw Error(`Instance is not a HookFetchRequest`);return i.current?.__injectPlugins__([s]),i},l=(...e)=>{if(i.current=n(...e),!i.current||!(`__injectPlugins__`in i.current))throw Error(`Instance is not a HookFetchRequest`);return i.current?.__injectPlugins__([s]),o(!0),i.current?.catch(e=>{e instanceof Error&&!e.message.includes(`Unexpected token`)&&e.name!==`AbortError`&&r?.(e),o(!1)}),i},u=(...e)=>(l(...e),i.current.text()),d=(...e)=>(l(...e),i.current.stream()),f=(...e)=>(l(...e),i.current.blob()),p=(...e)=>(l(...e),i.current.arrayBuffer()),m=(...e)=>(l(...e),i.current.formData()),h=(...e)=>(l(...e),i.current.bytes()),g=()=>{if(o(!1),i)try{i.current?.abort()}catch(e){console.error(`cancel error`,e)}};return{request:c,stream:d,text:u,blob:f,arrayBufferData:p,formDataResult:m,bytesData:h,cancel:g,loading:a,setLoading:o}}export{n as useHookFetch};
//# sourceMappingURL=index.mjs.map