use-merge-state
Version:
A useState variant hook that merges updates.
3 lines (2 loc) • 944 B
JavaScript
import{useState as n,useMemo as t,useCallback as r}from"react";function e(){return e=Object.assign||function(n){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(n[e]=r[e])}return n},e.apply(this,arguments)}const o=Array.isArray;function c(n){return n instanceof Map}function u(n){return"object"==typeof n&&(null==n?void 0:n.constructor)===Object}function i(n){return n instanceof Set}const a=(n,t)=>o(n)&&o(t)?((n,t)=>[...n,...t])(n,t):u(n)&&u(t)?((n,t)=>e({},n,t))(n,t):c(n)&&c(t)?((n,t)=>new Map([...n,...t]))(n,t):i(n)&&i(t)?((n,t)=>new Set([...n,...t]))(n,t):t,f={merge:!0};function s(o,c=f){const[u,i]=n(o),s=t(()=>e({},f,c),[c]),p=r((n,t)=>{const r=e({},s,t);i(r.merge?t=>a(t,function(n,...t){return function(n){return n instanceof Function}(n)?n(...t):n}(n,t)):n)},[s]);return[u,p]}export{a as merge,s as useMergeState};
//# sourceMappingURL=use-merge-state.modern.js.map