@ohkit/react-helper
Version:
some utils and hooks for react
3 lines (2 loc) • 1.11 kB
JavaScript
var e=require("react"),n=require("lodash-es"),t=require("@ohkit/platform");function r(t,r){var o=e.useRef(t),u=function(e){void 0===e&&(e={}),e&&"object"==typeof e&&Object.assign(o.current,e)};return r&&u(n.pick(t,r)),[o.current,u]}var o=function(n,r){t.inBrowser?e.useLayoutEffect(n,r):e.useEffect(n,r)};exports.assignRef=function(e,n){"function"==typeof e?e(n):e&&e.hasOwnProperty("current")&&Object.assign(e,{current:n})},exports.useCompatibleEffect=o,exports.useRuntime=r,exports.useSyncPropsState=function(n,t,u){var i=n[t],c="function"==typeof i,a=u||{},s=a.onChange,f=a.defaultValue,p=void 0===f?i:f,v=a.compare,l=void 0===v?function(e,n){return e===n}:v,d=e.useState(function(){return void 0!==i?i:p}),g=d[0],h=d[1],m=r({onChange:s,compare:l,inner:g,isFuncState:c},["compare","onChange","inner","isFuncState"])[0],C=e.useCallback(function(e,n){void 0===n&&(n=!0),null!=m.compare&&m.compare(m.inner,e)||(h(m.isFuncState?function(){return e}:e),n&&(null==m.onChange||m.onChange(e)))},[m]);return o(function(){var e=i;void 0===i&&void 0!==p&&(e=p),C(e,!1)},[p,i]),[g,C]};
//# sourceMappingURL=index.js.map