UNPKG

alova

Version:

Request strategy library for MVVM libraries such as Vue.js, React.js and Svelte.js

2 lines (1 loc) 1.23 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).reactHook=t(e.React)}(this,(function(e){"use strict";const t="undefined",n=void 0;typeof window===t&&typeof process!==t&&process.cwd;const o=()=>{},s=e=>2 in e?e[2]:e[0],r=e=>e.current,u=(e,t)=>{e.current=t};return{name:"React",create:t=>e.useState(t),export:s,dehydrate:s,update:(e,t)=>{t[2]=e,t[1](e)},memorize:t=>{const n=e.useRef(o);return u(n,t),e.useCallback(((...e)=>r(n)(...e)),[])},ref:t=>{const o=e.useRef(t);return r(o)===n&&u(o,t),o},effectRequest({handler:t,removeStates:o,saveStates:s,immediate:f,frontStates:c,watchingStates:a=[]}){const i=e.useRef(a);e.useEffect((()=>{const e=r(i);let s=n;for(const t in a)if(!Object.is(e[t],a[t])){s=Number(t);break}var c;return u(i,a),!f&&("number"!==(e=>typeof e)(c=s)||Number.isNaN(c))||t(s),o}),a);const d=e.useRef(!1);e.useEffect((()=>{r(d)?s(c):u(d,true)}))},computed:(t,n)=>[e.useMemo(t,n),o],watch:(t,n)=>{const o=e.useRef(false);e.useEffect((()=>{o.current?n():o.current=!0}),t)},onMounted:t=>{e.useEffect(t,[])},onUnmounted:t=>{e.useEffect((()=>t),[])}}}));