UNPKG

pooppy

Version:

A state management portfolio for personal use only

71 lines 2.4 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var immer_1 = require("immer"); var constate_1 = require("constate"); exports.createContainer = constate_1.default; /** * immer: https://github.com/mweststrate/immer */ var useImmer = function (initialState) { var _a = React.useState(initialState), state = _a[0], setState = _a[1]; return [ state, function (updater) { setState(immer_1.default(updater)); } ]; }; exports.useImmer = useImmer; /** * like recompose#nest * nest(MainCounter.Provider, DynamicImportedRoutePage) */ var nest = function () { var components = []; for (var _i = 0; _i < arguments.length; _i++) { components[_i] = arguments[_i]; } return function (props) { return components.reduceRight(function (children, Current) { return React.createElement(Current, __assign({}, props), children); }, props.children); }; }; exports.nest = nest; /** * Some useful collections Hooks! */ // thanks the idea and the original code! https://twitter.com/brunolemos/status/1090377532845801473 var useWhyDidYouUpdate = function (name, props) { var previousProps = React.useRef(null); React.useEffect(function () { if (previousProps.current) { var allKeys = Object.keys(__assign({}, previousProps.current, props)); var changesObj_1 = {}; allKeys.forEach(function (key) { if (previousProps.current[key] !== props[key]) { changesObj_1[key] = { from: previousProps.current[key], to: props[key] }; } }); if (Object.keys(changesObj_1).length) { console.log("[why-did-you-update]", name, changesObj_1); } } previousProps.current = props; }); }; exports.useWhyDidYouUpdate = useWhyDidYouUpdate; //# sourceMappingURL=pooppy.js.map