@blocklet/pages-kit 0.6.104 → 0.6.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,7 @@ const ufo_1 = require("ufo");
42
42
  const zustand_1 = require("zustand");
43
43
  const immer_1 = require("zustand/middleware/immer");
44
44
  const api_1 = require("../../api");
45
+ const use_deep_compare_memo_1 = require("../../hooks/use-deep-compare-memo");
45
46
  const types_1 = require("../../types");
46
47
  const preload_1 = require("../../types/preload");
47
48
  const property_1 = require("../../utils/property");
@@ -285,7 +286,7 @@ function useComponent({ instanceId, componentId, properties, locale, dev }) {
285
286
  // mode: production 不会有 transpile.props, dev 模式下会有 transpile.props,优先级最低
286
287
  const componentProps = transpile?.props ?? preload?.props;
287
288
  // 对 properties 进行转译,优先级中等
288
- const dynamicComponentProps = (0, react_1.useMemo)(() => {
289
+ const dynamicComponentProps = (0, use_deep_compare_memo_1.useDeepCompareMemo)(() => {
289
290
  return Object.fromEntries(Object.entries(properties ?? {})
290
291
  .map(([key, { value }]) => {
291
292
  const property = componentProperties?.[key]?.data;
@@ -302,7 +303,7 @@ function useComponent({ instanceId, componentId, properties, locale, dev }) {
302
303
  return [propKey, v];
303
304
  })
304
305
  .filter((i) => !!i));
305
- }, [JSON.stringify(properties), JSON.stringify(componentProperties), locale, dev?.defaultLocale]);
306
+ }, [properties, componentProperties, locale, dev?.defaultLocale]);
306
307
  return {
307
308
  Component: transpile?.Component ?? preload?.Component,
308
309
  EditComponent: transpile?.EditComponent,
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDeepCompareCallback = void 0;
4
+ const use_deep_compare_memo_1 = require("./use-deep-compare-memo");
5
+ const useDeepCompareCallback = (callback, deps) => {
6
+ return (0, use_deep_compare_memo_1.useDeepCompareMemo)(() => callback, deps);
7
+ };
8
+ exports.useDeepCompareCallback = useDeepCompareCallback;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useDeepCompareMemo = void 0;
7
+ const react_1 = require("react");
8
+ const react_fast_compare_1 = __importDefault(require("react-fast-compare"));
9
+ const useDeepCompareMemo = (factory, deps) => {
10
+ const ref = (0, react_1.useRef)(null);
11
+ if (!ref.current || !(0, react_fast_compare_1.default)(ref.current.deps, deps)) {
12
+ ref.current = { deps, value: factory() };
13
+ }
14
+ return ref.current.value;
15
+ };
16
+ exports.useDeepCompareMemo = useDeepCompareMemo;