@easyv/biz-components 0.0.35 → 0.0.36

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.
@@ -1,17 +1,16 @@
1
1
  type BaseValueType = string | number | boolean | object | Array<unknown> | null | undefined;
2
2
  interface Params<T> {
3
3
  value: T;
4
- callback: (newValue: T, oldValue?: T | undefined) => void | Promise<void> | (() => void);
4
+ callback: (newValue: T, oldValue?: T) => void | Promise<void> | (() => void);
5
5
  options?: {
6
6
  equalFn?: (value1: T, value2: T) => boolean;
7
7
  immediate?: boolean;
8
8
  };
9
9
  }
10
- /** 监听值变化,
11
- * - 值变化时调用 callback
12
- * - 判断值是否变化默认使用 lodash 的 isEqual
13
- * @param params { value: T; callback: (newValue: T, oldValue?: T) => void | Promise<void>; options?: { equalFn: (value1: T, value2: T) => boolean; immediate?: boolean; }}
14
- * - 注意:如果你需要使用 useEffect 的 cleanUp 函数,可以考虑在 callback 中使用。或者使用 useEffect。
10
+ /**监听值变化,
11
+ * 值变化时调用 callback
12
+ * 判断值是否变化默认使用 lodash 的 isEqual
13
+ * @param params { value: T; callback: (newValue: T, oldValue?: T) => void | Promise<void>; options?: { equalFn: (value1: T, value2: T) => boolean; immediate?: boolean; } }
15
14
  */
16
15
  export declare function useWatchValue<T extends BaseValueType>(params: Params<T>): void;
17
16
  export {};
@@ -1,41 +1,23 @@
1
1
  import { useRef, useEffect } from "react";
2
2
  import isEqual from "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEqual.es.js";
3
+ const initValue = Symbol("initValue");
3
4
  function useWatchValue(params) {
4
5
  const { value, callback, options } = params;
5
- const ref = useRef(void 0);
6
+ const ref = useRef(initValue);
6
7
  const initialRef = useRef(false);
7
- const { equalFn = isEqual, immediate } = options || {};
8
- const fnObj = useRef({
9
- callback,
10
- equalFn,
11
- immediate
12
- });
13
- fnObj.current = {
14
- callback,
15
- equalFn,
16
- immediate
17
- };
8
+ const { equalFn = isEqual } = options || {};
18
9
  useEffect(() => {
19
- const {
20
- callback: callbackInner,
21
- equalFn: equalFnInner,
22
- immediate: immediateInner
23
- } = fnObj.current;
24
- if (immediateInner && !initialRef.current) {
25
- callbackInner(value);
26
- ref.current = value;
27
- }
28
- if (initialRef.current === false) {
10
+ if ((options == null ? void 0 : options.immediate) && !initialRef.current) {
11
+ callback(value, value);
29
12
  initialRef.current = true;
30
13
  }
31
- const isEqualValue = equalFnInner(value, ref.current);
32
- if (ref.current === void 0) {
14
+ if (ref.current === initValue) {
33
15
  ref.current = value;
34
- } else if (isEqualValue === false) {
35
- callbackInner(value, ref.current);
16
+ } else if (equalFn(value, ref.current) === false) {
17
+ callback(value, ref.current);
36
18
  ref.current = value;
37
19
  }
38
- }, [value]);
20
+ });
39
21
  }
40
22
  export {
41
23
  useWatchValue
@@ -1 +1 @@
1
- {"version":3,"file":"useWatchValue.es.js","sources":["../../../src/hooks/useWatchValue/useWatchValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { isEqual } from 'lodash-es';\n\ntype BaseValueType = string | number | boolean | object | Array<unknown> | null | undefined;\n\ninterface Params<T> {\n value: T;\n callback: (newValue: T, oldValue?: T | undefined) => void | Promise<void> | (() => void);\n options?: {\n equalFn?: (value1: T, value2: T) => boolean;\n immediate?: boolean;\n };\n}\n\n/** 监听值变化,\n * - 值变化时调用 callback\n * - 判断值是否变化默认使用 lodash 的 isEqual\n * @param params { value: T; callback: (newValue: T, oldValue?: T) => void | Promise<void>; options?: { equalFn: (value1: T, value2: T) => boolean; immediate?: boolean; }}\n * - 注意:如果你需要使用 useEffect 的 cleanUp 函数,可以考虑在 callback 中使用。或者使用 useEffect。\n */\nexport function useWatchValue<T extends BaseValueType>(params: Params<T>) {\n const { value, callback, options } = params;\n const ref = useRef<T | undefined>(undefined);\n const initialRef = useRef(false);\n\n const { equalFn = isEqual, immediate } = options || {};\n const fnObj = useRef({\n callback,\n equalFn,\n immediate,\n });\n fnObj.current = {\n callback,\n equalFn,\n immediate,\n };\n\n useEffect(() => {\n const {\n callback: callbackInner,\n equalFn: equalFnInner,\n immediate: immediateInner,\n } = fnObj.current;\n if (immediateInner && !initialRef.current) {\n callbackInner(value);\n ref.current = value;\n }\n if (initialRef.current === false) {\n initialRef.current = true;\n }\n\n const isEqualValue = equalFnInner(value, ref.current);\n if (ref.current === undefined) {\n ref.current = value;\n } else if (isEqualValue === false) {\n callbackInner(value, ref.current);\n ref.current = value;\n }\n }, [value]);\n}\n"],"names":[],"mappings":";;AAoBO,SAAS,cAAuC,QAAmB;AACxE,QAAM,EAAE,OAAO,UAAU,QAAY,IAAA;AAC/B,QAAA,MAAM,OAAsB,MAAS;AACrC,QAAA,aAAa,OAAO,KAAK;AAE/B,QAAM,EAAE,UAAU,SAAS,UAAU,IAAI,WAAW,CAAC;AACrD,QAAM,QAAQ,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,YAAU,MAAM;AACR,UAAA;AAAA,MACJ,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,QACT,MAAM;AACN,QAAA,kBAAkB,CAAC,WAAW,SAAS;AACzC,oBAAc,KAAK;AACnB,UAAI,UAAU;AAAA,IAAA;AAEZ,QAAA,WAAW,YAAY,OAAO;AAChC,iBAAW,UAAU;AAAA,IAAA;AAGvB,UAAM,eAAe,aAAa,OAAO,IAAI,OAAO;AAChD,QAAA,IAAI,YAAY,QAAW;AAC7B,UAAI,UAAU;AAAA,IAAA,WACL,iBAAiB,OAAO;AACnB,oBAAA,OAAO,IAAI,OAAO;AAChC,UAAI,UAAU;AAAA,IAAA;AAAA,EAChB,GACC,CAAC,KAAK,CAAC;AACZ;"}
1
+ {"version":3,"file":"useWatchValue.es.js","sources":["../../../src/hooks/useWatchValue/useWatchValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { isEqual } from 'lodash-es';\n\ntype BaseValueType = string | number | boolean | object | Array<unknown> | null | undefined;\n\nconst initValue = Symbol('initValue');\n\ninterface Params<T> {\n value: T;\n callback: (newValue: T, oldValue?: T) => void | Promise<void> | (() => void);\n options?: {\n equalFn?: (value1: T, value2: T) => boolean;\n immediate?: boolean;\n };\n}\n/**监听值变化,\n * 值变化时调用 callback\n * 判断值是否变化默认使用 lodash 的 isEqual\n * @param params { value: T; callback: (newValue: T, oldValue?: T) => void | Promise<void>; options?: { equalFn: (value1: T, value2: T) => boolean; immediate?: boolean; } }\n */\nexport function useWatchValue<T extends BaseValueType>(params: Params<T>) {\n const { value, callback, options } = params;\n const ref = useRef<T | typeof initValue>(initValue);\n const initialRef = useRef(false);\n\n const { equalFn = isEqual } = options || {};\n\n useEffect(() => {\n if (options?.immediate && !initialRef.current) {\n callback(value, value);\n initialRef.current = true;\n }\n\n if (ref.current === initValue) {\n ref.current = value;\n } else if (equalFn(value, ref.current) === false) {\n callback(value, ref.current as T);\n ref.current = value;\n }\n });\n}\n"],"names":[],"mappings":";;AAKA,MAAM,YAAY,OAAO,WAAW;AAe7B,SAAS,cAAuC,QAAmB;AACxE,QAAM,EAAE,OAAO,UAAU,QAAY,IAAA;AAC/B,QAAA,MAAM,OAA6B,SAAS;AAC5C,QAAA,aAAa,OAAO,KAAK;AAE/B,QAAM,EAAE,UAAU,QAAQ,IAAI,WAAW,CAAC;AAE1C,YAAU,MAAM;AACd,SAAI,mCAAS,cAAa,CAAC,WAAW,SAAS;AAC7C,eAAS,OAAO,KAAK;AACrB,iBAAW,UAAU;AAAA,IAAA;AAGnB,QAAA,IAAI,YAAY,WAAW;AAC7B,UAAI,UAAU;AAAA,IAAA,WACL,QAAQ,OAAO,IAAI,OAAO,MAAM,OAAO;AACvC,eAAA,OAAO,IAAI,OAAY;AAChC,UAAI,UAAU;AAAA,IAAA;AAAA,EAChB,CACD;AACH;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/biz-components",
3
- "version": "0.0.35",
3
+ "version": "0.0.36",
4
4
  "type": "module",
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",