annil 1.5.9 → 1.5.10

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.d.ts +6 -0
  4. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/computedUpdater.js +3 -3
  5. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.js.map +1 -0
  6. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/data-tracer.d.ts +1 -1
  7. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.js.map +1 -0
  8. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/getPathsValue.js.map +1 -0
  9. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPropertiesValue.d.ts +1 -1
  10. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPropertiesValue.js +1 -1
  11. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/getPropertiesValue.js.map +1 -0
  12. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/index.d.ts +2 -0
  13. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/index.js +69 -0
  14. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/index.js.map +1 -0
  15. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/initComputed.d.ts +8 -5
  16. package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/initComputed.js +1 -1
  17. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputed.js.map +1 -0
  18. package/dist/api/DefineComponent/assignOptions/computedWatchHandle/isEqual.js.map +1 -0
  19. package/dist/api/DefineComponent/assignOptions/index.d.ts +49 -0
  20. package/dist/api/DefineComponent/{collectOptionsForComponent.js → assignOptions/index.js} +35 -23
  21. package/dist/api/DefineComponent/assignOptions/index.js.map +1 -0
  22. package/dist/api/DefineComponent/assignOptions/initStore/index.d.ts +2 -0
  23. package/dist/api/DefineComponent/assignOptions/initStore/index.js +12 -0
  24. package/dist/api/DefineComponent/assignOptions/initStore/index.js.map +1 -0
  25. package/dist/api/DefineComponent/index.d.ts +1 -1
  26. package/dist/api/DefineComponent/index.js +2 -2
  27. package/dist/api/DefineComponent/index.js.map +1 -1
  28. package/dist/api/RootComponent/Lifetimes/LifetimesConstraint.d.ts +1 -1
  29. package/dist/api/RootComponent/Observers/ObserversOption.d.ts +1 -1
  30. package/dist/behaviors/BStore.js +1 -14
  31. package/dist/behaviors/BStore.js.map +1 -1
  32. package/dist/utils/deepClone.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/computedUpdater.ts +6 -5
  35. package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/data-tracer.ts +1 -1
  36. package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPropertiesValue.ts +3 -4
  37. package/src/api/DefineComponent/assignOptions/computedWatchHandle/index.ts +110 -0
  38. package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/initComputed.ts +13 -8
  39. package/src/api/DefineComponent/{collectOptionsForComponent.ts → assignOptions/index.ts} +108 -61
  40. package/src/api/DefineComponent/assignOptions/initStore/index.ts +16 -0
  41. package/src/api/DefineComponent/index.ts +3 -6
  42. package/src/api/DefineComponent/storeDataHandle/index.ts +30 -0
  43. package/src/api/RootComponent/Lifetimes/LifetimesConstraint.ts +1 -1
  44. package/src/api/RootComponent/Observers/ObserversOption.ts +2 -2
  45. package/src/behaviors/BStore.ts +4 -22
  46. package/src/behaviors/BbeforeCreated.ts +1 -1
  47. package/src/utils/deepClone.ts +1 -2
  48. package/dist/api/DefineComponent/collectOptionsForComponent.d.ts +0 -31
  49. package/dist/api/DefineComponent/collectOptionsForComponent.js.map +0 -1
  50. package/dist/behaviors/BComputedAndWatch/computedUpdater.d.ts +0 -2
  51. package/dist/behaviors/BComputedAndWatch/computedUpdater.js.map +0 -1
  52. package/dist/behaviors/BComputedAndWatch/data-tracer.js.map +0 -1
  53. package/dist/behaviors/BComputedAndWatch/getPathsValue.js.map +0 -1
  54. package/dist/behaviors/BComputedAndWatch/getPropertiesValue.js.map +0 -1
  55. package/dist/behaviors/BComputedAndWatch/index.d.ts +0 -1
  56. package/dist/behaviors/BComputedAndWatch/index.js +0 -85
  57. package/dist/behaviors/BComputedAndWatch/index.js.map +0 -1
  58. package/dist/behaviors/BComputedAndWatch/initComputed.js.map +0 -1
  59. package/dist/behaviors/BComputedAndWatch/isEqual.js.map +0 -1
  60. package/dist/behaviors/BComputedAndWatch/types.d.ts +0 -24
  61. package/dist/behaviors/BComputedAndWatch/types.js +0 -2
  62. package/dist/behaviors/BComputedAndWatch/types.js.map +0 -1
  63. package/dist/utils/deleteProtoField.d.ts +0 -1
  64. package/dist/utils/deleteProtoField.js +0 -4
  65. package/dist/utils/deleteProtoField.js.map +0 -1
  66. package/src/behaviors/BComputedAndWatch/index.ts +0 -135
  67. package/src/behaviors/BComputedAndWatch/types.ts +0 -30
  68. package/src/utils/deleteProtoField.ts +0 -6
  69. /package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/data-tracer.js +0 -0
  70. /package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPathsValue.d.ts +0 -0
  71. /package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPathsValue.js +0 -0
  72. /package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/isEqual.d.ts +0 -0
  73. /package/dist/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/isEqual.js +0 -0
  74. /package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/getPathsValue.ts +0 -0
  75. /package/src/{behaviors/BComputedAndWatch → api/DefineComponent/assignOptions/computedWatchHandle}/isEqual.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPathsValue.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/getPathsValue.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,SAAS,GAAc,EAAE,CAAC;IAGhC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAEzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,IAAI,EAAE,EAAE;YAEtD,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPropertiesValue.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/getPropertiesValue.ts"],"names":[],"mappings":"AAUA,SAAS,sBAAsB,CAC7B,QAAwB;IAExB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,KAAK;YACR,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf;YAEE,MAAM,KAAK,CACT,8DAA8D,CAC/D,CAAC;IACN,CAAC;AACH,CAAC;AACD,SAAS,gBAAgB,CAAC,MAAuB;IAC/C,OAAO,MAAM,YAAY,QAAQ,CAAC;AACpC,CAAC;AACD,SAAS,eAAe,CAAC,MAAuB;IAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,aAA+C;IAChF,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAE7B,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAEnC,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YAEN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const BComputedAndWatch: string;
@@ -1,85 +0,0 @@
1
- import { deepClone } from "../../utils/deepClone";
2
- import { deleteProtoField } from "../../utils/deleteProtoField";
3
- import { isEmptyObject } from "../../utils/isEmptyObject";
4
- import { computedUpdater } from "./computedUpdater";
5
- import { getPathsValue } from "./getPathsValue";
6
- import { getPropertiesValue } from "./getPropertiesValue";
7
- import { initComputed } from "./initComputed";
8
- import { isEqual } from "./isEqual";
9
- function initWatchOldValue(watchConfig) {
10
- const watchOldValue = {};
11
- for (const key in watchConfig) {
12
- watchOldValue[key] = deepClone(getPathsValue(this.data, key));
13
- }
14
- return watchOldValue;
15
- }
16
- export const BComputedAndWatch = Behavior({
17
- definitionFilter(options) {
18
- const rawPropertiesValue = getPropertiesValue(options.properties);
19
- const methodOpt = options.methods;
20
- const computedConfig = options.computed;
21
- if (computedConfig && !isEmptyObject(computedConfig)) {
22
- const computedCache = initComputed(options, computedConfig, Object.assign(Object.assign({}, options.data), rawPropertiesValue));
23
- methodOpt.__computedInitCache__ = () => computedCache;
24
- }
25
- const observersConfig = options.observers;
26
- const originalFunc = observersConfig["**"];
27
- observersConfig["**"] = function () {
28
- const computedStatus = this.__computedStatus__;
29
- switch (computedStatus) {
30
- case "待更新":
31
- {
32
- const isUpdated = this.__computedUpdater__();
33
- if (isUpdated) {
34
- this.__computedStatus__ = "更新完毕";
35
- }
36
- else {
37
- originalFunc && originalFunc.call(this);
38
- }
39
- }
40
- break;
41
- case "更新完毕":
42
- {
43
- this.__computedStatus__ = "待更新";
44
- originalFunc && originalFunc.call(this);
45
- }
46
- break;
47
- }
48
- };
49
- const watchConfig = options.watch;
50
- if (watchConfig && !isEmptyObject(watchConfig)) {
51
- const methodsConfig = options.methods || (options.methods = {});
52
- methodsConfig.__watchConfig__ = () => watchConfig;
53
- const observersConfig = options.observers;
54
- for (const key in watchConfig) {
55
- const watchHadle = watchConfig[key];
56
- const originObserversHandle = observersConfig[key];
57
- observersConfig[key] = function (...newValue) {
58
- originObserversHandle && originObserversHandle.call(this, ...newValue);
59
- const watchOldValue = this.__watchOldValue__;
60
- const oldValue = watchOldValue[key];
61
- if (isEqual(newValue, oldValue))
62
- return;
63
- watchOldValue[key] = deepClone(newValue);
64
- watchHadle.call(this, ...newValue, ...oldValue);
65
- };
66
- }
67
- }
68
- },
69
- lifetimes: {
70
- created() {
71
- var _a, _b;
72
- const __computedInitCache__ = (_a = this.__computedInitCache__) === null || _a === void 0 ? void 0 : _a.call(this);
73
- this.__computedCache__ = __computedInitCache__;
74
- deleteProtoField(this, "__computedInitCache__");
75
- this.__computedStatus__ = "待更新";
76
- this.__computedUpdater__ = computedUpdater.bind(this);
77
- const watchConfig = (_b = this.__watchConfig__) === null || _b === void 0 ? void 0 : _b.call(this);
78
- deleteProtoField(this, "__watchConfig__");
79
- if (watchConfig) {
80
- this.__watchOldValue__ = initWatchOldValue.call(this, watchConfig);
81
- }
82
- },
83
- },
84
- });
85
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"initComputed.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/initComputed.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isEqual.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/isEqual.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAGD,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAGD,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAE1C,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAGD,SAAS,UAAU,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAGD,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC;AAQD,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,CAAU;IAE5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAGD,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,EAAE,CAAa,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,CAAC,EAAE,CAAS,CAAC,CAAC;IAClC,CAAC;IAGD,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAExB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,24 +0,0 @@
1
- import type { Func } from "hry-types/src/Misc/Func";
2
- import type { ComponentInstance, PageInstance } from "../../api/RootComponent/Instance/RootComponentInstance";
3
- import type { ComputedDependence } from "./initComputed";
4
- export type InstanceCustomFields = {
5
- __storeConfig__?: () => Record<string, () => unknown>;
6
- __computedStatus__?: "待更新" | "更新完毕";
7
- __computedUpdater__: Func;
8
- __computedInitCache__?: () => ComputedCache;
9
- __computedCache__: ComputedCache | undefined;
10
- __watchOldValue__?: WatchOldValue;
11
- __watchConfig__?: () => Record<string, Func>;
12
- __compLoadList__?: Func[];
13
- __prePropertiesValue__: object | undefined;
14
- __setDataFromInner__?: boolean;
15
- disposer: Record<string, Func>;
16
- };
17
- export type Instance = (ComponentInstance | PageInstance) & InstanceCustomFields;
18
- export type ItemCache = {
19
- dependences: ComputedDependence[];
20
- method: Func;
21
- value: unknown;
22
- };
23
- export type ComputedCache = Record<string, ItemCache>;
24
- export type WatchOldValue = Record<string, unknown[]>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- export declare function deleteProtoField<T extends object>(obj: T, key: keyof T): void;
@@ -1,4 +0,0 @@
1
- export function deleteProtoField(obj, key) {
2
- Reflect.deleteProperty(Object.getPrototypeOf(obj), key);
3
- }
4
- //# sourceMappingURL=deleteProtoField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deleteProtoField.js","sourceRoot":"","sources":["../../src/utils/deleteProtoField.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAmB,GAAM,EAAE,GAAY;IACrE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,135 +0,0 @@
1
- import type { Func } from "hry-types/src/Misc/_api";
2
- import type { FinalOptionsOfComponent } from "../../api/DefineComponent/collectOptionsForComponent";
3
- import { deepClone } from "../../utils/deepClone";
4
- import { deleteProtoField } from "../../utils/deleteProtoField";
5
- import { isEmptyObject } from "../../utils/isEmptyObject";
6
- import { computedUpdater } from "./computedUpdater";
7
- import { getPathsValue } from "./getPathsValue";
8
- import { getPropertiesValue } from "./getPropertiesValue";
9
- import { initComputed } from "./initComputed";
10
- import { isEqual } from "./isEqual";
11
- import type { Instance, WatchOldValue } from "./types";
12
- function initWatchOldValue(this: Instance, watchConfig: object): WatchOldValue {
13
- const watchOldValue = {};
14
- for (const key in watchConfig) {
15
- // @ts-ignore 隐式索引
16
- watchOldValue[key] = deepClone(getPathsValue(this.data, key));
17
- }
18
-
19
- return watchOldValue;
20
- }
21
-
22
- /**
23
- * 实现
24
- * 1. 计算属性初始化在attached之后(前版本在beforeCreate)
25
- * 2. 通过observers.**(前版本劫持setData)更新计算属性。
26
- * 原因
27
- * 1. 之前版本放在beforeCreate好处是符合正常思维,即组件建立后(created)包含计算属性的data就应该都存在了。
28
- * 但由于properties字段数据实际有效是发生在attached之后。所以之前版本计算属性在挂载到上级组件时,依赖properties的计算属性更新有可能是无意义的。因为上级组件传递的properties有可能由它的上级组件传递而来。根本愿意是组件实例挂载是由内而外,而properties是由外到内传递数据。虽然这些无意义更新只发生在一次(onload之前).
29
- * 2 当properties中有内部字段时(例如设置了pureDataPattern: /^_/,),无法通过设置properties下的observer属性来获知属性更新通知,从而无法劫持setData。才导致有这个最新版本出现。
30
- * 3. 子组件计算属性若依赖properties字段,当子组件挂载到父组件时,就会触发observers.**字段,从而进行一次无效的计算属性更新。解决方案是:实例默认一个__computedStatus__字段,当observers.**变化时,如果__computedStatus__为'初始化中'(表示计算属性还未初始化完毕),就不会进行计算属性更新。当attached周期后(计算属性初始化完毕)把__computedStatus__变为'待更新',再次触发observers.**字段则更新计算属性。
31
- */
32
- /**
33
- * computed初始化值在组件建立后,这样能保证计算属性依赖properties字段时,properties必传字段一定有值,减少计算属性代码(不必考虑properties无值时的情况)。坏处是增加了组件初始化时运行的代码量。
34
- */
35
-
36
- export const BComputedAndWatch = Behavior({
37
- // @ts-ignore
38
- definitionFilter(options: FinalOptionsOfComponent) {
39
- // 计算属性初始化
40
- const rawPropertiesValue = getPropertiesValue(options.properties);
41
- const methodOpt = options.methods;
42
- const computedConfig = options.computed;
43
-
44
- if (computedConfig && !isEmptyObject(computedConfig)) {
45
- const computedCache = initComputed(options, computedConfig, { ...options.data, ...rawPropertiesValue });
46
-
47
- // 把计算属性缓存从方法中带入到实例中,在created周期加入实例后删除
48
- methodOpt.__computedInitCache__ = () => computedCache;
49
- }
50
- const observersConfig = options.observers;
51
- // 通过observers加入`**`字段来触发计算属性更新
52
- const originalFunc = observersConfig["**"] as Func | undefined;
53
-
54
- observersConfig["**"] = function(this: Instance): undefined {
55
- const computedStatus = this.__computedStatus__;
56
- switch (computedStatus) {
57
- case "待更新":
58
- // 3. 触发来自attached后的setData或properties更新
59
- {
60
- const isUpdated = this.__computedUpdater__();
61
- if (isUpdated) {
62
- // 更新了会再次触发自身转到 4
63
- this.__computedStatus__ = "更新完毕";
64
- } else {
65
- // 无需更新计算属性
66
- originalFunc && /* istanbul ignore next */ originalFunc.call(this);
67
- }
68
- }
69
- break;
70
- case "更新完毕":
71
- {
72
- // 4 来自计算属性更新后的自身回调
73
- // console.log("来自计算属性更新后的自身回调");
74
- this.__computedStatus__ = "待更新";
75
-
76
- originalFunc && /* istanbul ignore next */ originalFunc.call(this);
77
- }
78
- break;
79
- }
80
- };
81
-
82
- // watch handle
83
- const watchConfig = options.watch;
84
- if (watchConfig && !isEmptyObject(watchConfig)) {
85
- /* istanbul ignore next */
86
- const methodsConfig = options.methods ||= {};
87
-
88
- // 把watch配置保留在methods的__watchConfig__字段下带入到组件实例中。
89
- methodsConfig.__watchConfig__ = () => watchConfig;
90
-
91
- /* istanbul ignore next */
92
- const observersConfig = options.observers;
93
- for (const key in watchConfig) {
94
- const watchHadle = watchConfig[key];
95
- const originObserversHandle = observersConfig[key] as Func | undefined;
96
-
97
- // 在监控多个数据时,参数是多个值
98
- observersConfig[key] = function(this: Instance, ...newValue: unknown[]) {
99
- originObserversHandle && originObserversHandle.call(this, ...newValue);
100
-
101
- const watchOldValue = this.__watchOldValue__!;
102
- const oldValue = watchOldValue[key];
103
-
104
- if (isEqual(newValue, oldValue)) return;
105
- watchOldValue[key] = deepClone(newValue);
106
-
107
- watchHadle.call(this, ...newValue, ...oldValue);
108
- };
109
- }
110
- }
111
- },
112
- lifetimes: {
113
- created(this: Instance) {
114
- // 把计算属性的初始缓存放入实例
115
- const __computedInitCache__ = this.__computedInitCache__?.();
116
-
117
- this.__computedCache__ = __computedInitCache__;
118
-
119
- deleteProtoField(this, "__computedInitCache__");
120
-
121
- this.__computedStatus__ = "待更新";
122
-
123
- this.__computedUpdater__ = computedUpdater.bind(this);
124
-
125
- // 初始化watch 生成OldValue
126
- const watchConfig = this.__watchConfig__?.();
127
-
128
- deleteProtoField(this, "__watchConfig__");
129
-
130
- if (watchConfig) {
131
- this.__watchOldValue__ = initWatchOldValue.call(this, watchConfig);
132
- }
133
- },
134
- },
135
- });
@@ -1,30 +0,0 @@
1
- import type { Func } from "hry-types/src/Misc/Func";
2
- import type { ComponentInstance, PageInstance } from "../../api/RootComponent/Instance/RootComponentInstance";
3
- import type { ComputedDependence } from "./initComputed";
4
-
5
- export type InstanceCustomFields = {
6
- __storeConfig__?: () => Record<string, () => unknown>;
7
- __computedStatus__?: "待更新" | "更新完毕";
8
- __computedUpdater__: Func;
9
- __computedInitCache__?: () => ComputedCache;
10
- __computedCache__: ComputedCache | undefined;
11
- __watchOldValue__?: WatchOldValue;
12
- __watchConfig__?: () => Record<string, Func>;
13
- __compLoadList__?: Func[];
14
-
15
- __prePropertiesValue__: object | undefined;
16
- __setDataFromInner__?: boolean;
17
- disposer: Record<string, Func>;
18
- };
19
-
20
- export type Instance = (ComponentInstance | PageInstance) & InstanceCustomFields;
21
-
22
- export type ItemCache = {
23
- dependences: ComputedDependence[];
24
- method: Func;
25
- value: unknown;
26
- };
27
-
28
- export type ComputedCache = Record<string, ItemCache>;
29
-
30
- export type WatchOldValue = Record<string, unknown[]>;
@@ -1,6 +0,0 @@
1
- /**
2
- * 删除对象原型上的属性(只是上级原型)
3
- */
4
- export function deleteProtoField<T extends object>(obj: T, key: keyof T) {
5
- Reflect.deleteProperty(Object.getPrototypeOf(obj), key);
6
- }