useRenderTimes.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. var _typeof = require("@babel/runtime/helpers/typeof");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = exports.RenderBlock = void 0;
  7. var React = _interopRequireWildcard(require("react"));
  8. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  9. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  10. /* istanbul ignore file */
  11. function useRenderTimes(props, debug) {
  12. // Render times
  13. var timesRef = React.useRef(0);
  14. timesRef.current += 1;
  15. // Props changed
  16. var propsRef = React.useRef(props);
  17. var keys = [];
  18. Object.keys(props || {}).map(function (key) {
  19. var _propsRef$current;
  20. if ((props === null || props === void 0 ? void 0 : props[key]) !== ((_propsRef$current = propsRef.current) === null || _propsRef$current === void 0 ? void 0 : _propsRef$current[key])) {
  21. keys.push(key);
  22. }
  23. });
  24. propsRef.current = props;
  25. // Cache keys since React rerender may cause it lost
  26. var keysRef = React.useRef([]);
  27. if (keys.length) {
  28. keysRef.current = keys;
  29. }
  30. React.useDebugValue(timesRef.current);
  31. React.useDebugValue(keysRef.current.join(', '));
  32. if (debug) {
  33. console.log("".concat(debug, ":"), timesRef.current, keysRef.current);
  34. }
  35. return timesRef.current;
  36. }
  37. var _default = exports.default = process.env.NODE_ENV !== 'production' ? useRenderTimes : function () {};
  38. var RenderBlock = exports.RenderBlock = /*#__PURE__*/React.memo(function () {
  39. var times = useRenderTimes();
  40. return /*#__PURE__*/React.createElement("h1", null, "Render Times: ", times);
  41. });
  42. if (process.env.NODE_ENV !== 'production') {
  43. RenderBlock.displayName = 'RenderBlock';
  44. }