CacheMap.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  8. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. // Firefox has low performance of map.
  11. var CacheMap = /*#__PURE__*/function () {
  12. function CacheMap() {
  13. (0, _classCallCheck2.default)(this, CacheMap);
  14. (0, _defineProperty2.default)(this, "maps", void 0);
  15. // Used for cache key
  16. // `useMemo` no need to update if `id` not change
  17. (0, _defineProperty2.default)(this, "id", 0);
  18. (0, _defineProperty2.default)(this, "diffRecords", new Map());
  19. this.maps = Object.create(null);
  20. }
  21. (0, _createClass2.default)(CacheMap, [{
  22. key: "set",
  23. value: function set(key, value) {
  24. // Record prev value
  25. this.diffRecords.set(key, this.maps[key]);
  26. this.maps[key] = value;
  27. this.id += 1;
  28. }
  29. }, {
  30. key: "get",
  31. value: function get(key) {
  32. return this.maps[key];
  33. }
  34. /**
  35. * CacheMap will record the key changed.
  36. * To help to know what's update in the next render.
  37. */
  38. }, {
  39. key: "resetRecord",
  40. value: function resetRecord() {
  41. this.diffRecords.clear();
  42. }
  43. }, {
  44. key: "getRecord",
  45. value: function getRecord() {
  46. return this.diffRecords;
  47. }
  48. }]);
  49. return CacheMap;
  50. }();
  51. var _default = exports.default = CacheMap;