Browse Source

🎨 优化useReset的判断逻辑 减少复杂度

晓晓晓晓丶vv 4 năm trước cách đây
mục cha
commit
c8139f877f
1 tập tin đã thay đổi với 11 bổ sung8 xóa
  1. 11 8
      src/hooks/useReset.ts

+ 11 - 8
src/hooks/useReset.ts

@@ -1,14 +1,17 @@
-import { isArray, isObject } from "@/helper/utils";
+const fieldType = {
+  "[object Object]": {},
+  "[object Array]": [],
+  "[object Number]": "",
+  "[object String]": "",
+  "[object Boolean]": false,
+};
 
 const useReset = <T extends Record<string, any>>(fields: T): T => {
+  const typeString = Object.prototype.toString;
+
   Object.keys(fields).forEach((field) => {
-    let fieldValue = fields[field];
-    if (isObject(fieldValue)) fieldValue = {};
-    else if (isArray(fieldValue)) fieldValue = [];
-    else if (typeof fieldValue === "string" || typeof fieldValue === "number")
-      fieldValue = "";
-    else if (typeof fieldValue === "boolean") fieldValue = false;
-    (fields[field] as T[keyof T]) = fieldValue;
+    const type = typeString.call(fields[field] as T[keyof T]);
+    (fields[field] as T[keyof T]) = (<Record<string, any>>fieldType)[type];
   });
 
   return fields as T;