@fairys/taro-tools-simple-form-ui 0.0.5 → 0.0.7

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.
@@ -15,6 +15,8 @@ export interface FairysTaroValtioFormProps<T extends MObject<T> = object> extend
15
15
  formData?: FairysTaroValtioFormInstance<T>['state'];
16
16
  /**表单隐藏状态*/
17
17
  hideState?: FairysTaroValtioFormInstance<T>['hideState'];
18
+ /**formData 是否进行深度拷贝,如果不是则直接把 formData 赋值到 state ,否则使用 copy 方法深度拷贝后赋值 */
19
+ isDeepCopy?: boolean;
18
20
  }
19
21
  export declare function FairysTaroValtioForm<T extends MObject<T> = object>(props: FairysTaroValtioFormProps<T>): import("react/jsx-runtime").JSX.Element;
20
22
  export declare namespace FairysTaroValtioForm {
package/esm/form/form.js CHANGED
@@ -6,12 +6,13 @@ import { FairysTaroValtioFormHideItem, FairysTaroValtioFormItem } from "./form.i
6
6
  import { FairysTaroValtioFormConfigItem, FairysTaroValtioFormConfigListItem } from "./item.config.js";
7
7
  export * from "./item.config.js";
8
8
  function FairysTaroValtioForm(props) {
9
- const { form, children, rules, formData, hideState, ...rest } = props;
9
+ const { form, children, rules, formData, hideState, isDeepCopy = true, ...rest } = props;
10
10
  const formInstance = useFairysTaroValtioFormInstance(form);
11
11
  formInstance.rules = rules;
12
12
  useMemo(()=>formInstance.ctor({
13
13
  formData,
14
- hideState
14
+ hideState,
15
+ isDeepCopy
15
16
  }), []);
16
17
  return /*#__PURE__*/ jsx(FairysTaroValtioFormInstanceContext.Provider, {
17
18
  value: formInstance,
@@ -13,7 +13,8 @@ export declare class FairysTaroValtioFormInstance<T extends MObject<T> = Record<
13
13
  /**初始化表单值*/
14
14
  ctor: (options?: {
15
15
  formData?: Partial<T>;
16
- hideState?: Partial<Record<PropertyKey, boolean>>;
16
+ hideState?: Record<PropertyKey, boolean>;
17
+ isDeepCopy?: boolean;
17
18
  }) => void;
18
19
  /**
19
20
  * 更新数据
@@ -7,14 +7,13 @@ class FairysTaroValtioFormInstance {
7
7
  errorState = proxy({});
8
8
  hideState = proxy({});
9
9
  ctor = (options)=>{
10
- const { formData, hideState } = options || {};
11
- this.state = proxy({});
10
+ const { formData, hideState, isDeepCopy = true } = options || {};
12
11
  this.errorState = proxy({});
13
- this.hideState = proxy({});
14
- if (formData) this.updated(copy(formData));
15
- if (hideState) this.updatedHideInfo(copy(hideState));
12
+ this.hideState = proxy(hideState ? copy(hideState) : {});
13
+ if (isDeepCopy) this.state = proxy(formData ? copy(formData) : {});
14
+ else if (formData) this.state = proxy(formData);
16
15
  };
17
- updated = (state, isValidate)=>{
16
+ updated = (state, isValidate = true)=>{
18
17
  const keys = Object.keys(state);
19
18
  for(let index = 0; index < keys.length; index++){
20
19
  const key = keys[index];
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "SunLxy <1011771396@qq.com>",
4
4
  "description": "框架组件库",
5
5
  "homepage": "https://github.com/autumn-fairy-tales/fairys-taro-react",
6
- "version": "0.0.5",
6
+ "version": "0.0.7",
7
7
  "main": "lib/index.js",
8
8
  "types": "esm/index.d.ts",
9
9
  "module": "esm/index.js",
package/src/form/form.tsx CHANGED
@@ -23,15 +23,17 @@ export interface FairysTaroValtioFormProps<T extends MObject<T> = object> extend
23
23
  formData?: FairysTaroValtioFormInstance<T>['state'];
24
24
  /**表单隐藏状态*/
25
25
  hideState?: FairysTaroValtioFormInstance<T>['hideState'];
26
+ /**formData 是否进行深度拷贝,如果不是则直接把 formData 赋值到 state ,否则使用 copy 方法深度拷贝后赋值 */
27
+ isDeepCopy?: boolean;
26
28
  }
27
29
 
28
30
  export function FairysTaroValtioForm<T extends MObject<T> = object>(props: FairysTaroValtioFormProps<T>) {
29
- const { form, children, rules, formData, hideState, ...rest } = props;
31
+ const { form, children, rules, formData, hideState, isDeepCopy = true, ...rest } = props;
30
32
  const formInstance = useFairysTaroValtioFormInstance(form);
31
33
  /**表单规则*/
32
34
  formInstance.rules = rules;
33
35
  /**初始化表单值*/
34
- useMemo(() => formInstance.ctor({ formData, hideState }), []);
36
+ useMemo(() => formInstance.ctor({ formData, hideState, isDeepCopy }), []);
35
37
  return (
36
38
  <FairysTaroValtioFormInstanceContext.Provider value={formInstance}>
37
39
  <FairysTaroValtioFormLayout {...rest}>{children}</FairysTaroValtioFormLayout>
@@ -11,20 +11,19 @@ export class FairysTaroValtioFormInstance<T extends MObject<T> = Record<string,
11
11
  /**
12
12
  * 错误信息
13
13
  */
14
- errorState = proxy<Record<PropertyKey, string[]>>({} as Record<PropertyKey, string[]>);
14
+ errorState = proxy<Record<PropertyKey, string[]>>({});
15
15
  /**隐藏状态*/
16
- hideState = proxy<Record<PropertyKey, boolean>>({} as Record<PropertyKey, boolean>);
16
+ hideState = proxy<Record<PropertyKey, boolean>>({});
17
17
  /**初始化表单值*/
18
- ctor = (options?: { formData?: Partial<T>; hideState?: Partial<Record<PropertyKey, boolean>> }) => {
19
- const { formData, hideState } = options || {};
20
- this.state = proxy<T>({} as T);
21
- this.errorState = proxy<Record<PropertyKey, string[]>>({} as Record<PropertyKey, string[]>);
22
- this.hideState = proxy<Record<PropertyKey, boolean>>({} as Record<PropertyKey, boolean>);
23
- if (formData) {
24
- this.updated(copy(formData));
25
- }
26
- if (hideState) {
27
- this.updatedHideInfo(copy(hideState));
18
+ ctor = (options?: { formData?: Partial<T>; hideState?: Record<PropertyKey, boolean>; isDeepCopy?: boolean }) => {
19
+ const { formData, hideState, isDeepCopy = true } = options || {};
20
+ // 如果是 isProxy,则直接赋值
21
+ this.errorState = proxy<Record<PropertyKey, string[]>>({});
22
+ this.hideState = proxy<Record<PropertyKey, boolean>>(hideState ? copy(hideState) : {});
23
+ if (isDeepCopy) {
24
+ this.state = proxy((formData ? copy(formData) : {}) as T);
25
+ } else if (formData) {
26
+ this.state = proxy(formData as T);
28
27
  }
29
28
  };
30
29
  /**
@@ -32,7 +31,7 @@ export class FairysTaroValtioFormInstance<T extends MObject<T> = Record<string,
32
31
  * @param state 更新数据对象
33
32
  * @param isValidate 是否验证(可选)
34
33
  */
35
- updated = <M = T>(state: Partial<M>, isValidate?: boolean) => {
34
+ updated = <M = T>(state: Partial<M>, isValidate: boolean = true) => {
36
35
  const keys = Object.keys(state);
37
36
  for (let index = 0; index < keys.length; index++) {
38
37
  const key = keys[index];
@@ -106,8 +105,8 @@ export class FairysTaroValtioFormInstance<T extends MObject<T> = Record<string,
106
105
  */
107
106
  clear = () => {
108
107
  this.state = proxy<T>({} as T);
109
- this.errorState = proxy<Record<PropertyKey, string[]>>({} as Record<keyof T, string[]>);
110
- this.hideState = proxy<Record<PropertyKey, boolean>>({} as Record<keyof T, boolean>);
108
+ this.errorState = proxy<Record<PropertyKey, string[]>>({});
109
+ this.hideState = proxy<Record<PropertyKey, boolean>>({});
111
110
  };
112
111
 
113
112
  // ===================================================规则处理================================================================