use-merge-state
Version:
A useState variant hook that merges updates.
3 lines (2 loc) • 1.28 kB
JavaScript
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((n||self).useMergeState={},n.react)}(this,function(n,e){function t(){return t=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},t.apply(this,arguments)}var r=Array.isArray;function o(n){return n instanceof Function}function u(n){return n instanceof Map}function c(n){return"object"==typeof n&&(null==n?void 0:n.constructor)===Object}function i(n){return n instanceof Set}var f=function(n,e){return r(n)&&r(e)?function(n,e){return[].concat(n,e)}(n,e):c(n)&&c(e)?function(n,e){return t({},n,e)}(n,e):u(n)&&u(e)?function(n,e){return new Map([].concat(n,e))}(n,e):i(n)&&i(e)?function(n,e){return new Set([].concat(n,e))}(n,e):e},a={merge:!0};n.merge=f,n.useMergeState=function(n,r){void 0===r&&(r=a);var u=e.useState(n),c=u[0],i=u[1],s=e.useMemo(function(){return t({},a,r)},[r]),l=e.useCallback(function(n,e){var r=t({},s,e);i(r.merge?function(e){return f(e,function(n){return o(n)?n.apply(void 0,[].slice.call(arguments,1)):n}(n,e))}:n)},[s]);return[c,l]}});
//# sourceMappingURL=use-merge-state.umd.js.map