Browse Source

currWbwData 防浅拷贝

visuddhinanda 2 years ago
parent
commit
295c073051
1 changed files with 70 additions and 68 deletions
  1. 70 68
      dashboard/src/components/template/Wbw/WbwDetail.tsx

+ 70 - 68
dashboard/src/components/template/Wbw/WbwDetail.tsx

@@ -27,74 +27,75 @@ const WbwDetailWidget = ({
   onCommentCountChange,
 }: IWidget) => {
   const intl = useIntl();
-  const [currWbwData, setCurrWbwData] = useState(data);
+  const [currWbwData, setCurrWbwData] = useState<IWbw>(
+    JSON.parse(JSON.stringify(data))
+  );
   useEffect(() => {
-    setCurrWbwData(data);
+    setCurrWbwData(JSON.parse(JSON.stringify(data)));
   }, [data]);
+
   function fieldChanged(field: TFieldName, value: string) {
     console.log("field", field, "value", value);
-    let mData = currWbwData;
-    switch (field) {
-      case "note":
-        mData.note = { value: value, status: 7 };
-        break;
-      case "bookMarkColor":
-        mData.bookMarkColor = { value: parseInt(value), status: 7 };
-        break;
-      case "bookMarkText":
-        mData.bookMarkText = { value: value, status: 7 };
-        break;
-      case "word":
-        mData.word = { value: value, status: 7 };
-        break;
-      case "real":
-        mData.real = { value: value, status: 7 };
-        break;
-      case "meaning":
-        mData.meaning = { value: value, status: 7 };
-        break;
-      case "factors":
-        mData.factors = { value: value, status: 7 };
-        break;
-      case "factorMeaning":
-        mData.factorMeaning = { value: value, status: 7 };
-        break;
-      case "parent":
-        mData.parent = { value: value, status: 7 };
-        break;
-      case "parent2":
-        mData.parent2 = { value: value, status: 7 };
-        break;
-      case "grammar2":
-        mData.grammar2 = { value: value, status: 7 };
-        break;
-      case "case":
-        const arrCase = value.split("#");
-        mData.case = { value: value, status: 7 };
-        mData.type = { value: arrCase[0] ? arrCase[0] : "", status: 7 };
-        mData.grammar = { value: arrCase[1] ? arrCase[1] : "", status: 7 };
-        break;
-      case "relation":
-        mData.relation = { value: value, status: 7 };
-        break;
-      case "confidence":
-        mData.confidence = parseFloat(value);
-        break;
-      case "locked":
-        mData.locked = JSON.parse(value);
-        break;
-      default:
-        break;
-    }
-    setCurrWbwData(mData);
+    setCurrWbwData((origin) => {
+      switch (field) {
+        case "note":
+          origin.note = { value: value, status: 7 };
+          break;
+        case "bookMarkColor":
+          origin.bookMarkColor = { value: parseInt(value), status: 7 };
+          break;
+        case "bookMarkText":
+          origin.bookMarkText = { value: value, status: 7 };
+          break;
+        case "word":
+          origin.word = { value: value, status: 7 };
+          break;
+        case "real":
+          origin.real = { value: value, status: 7 };
+          break;
+        case "meaning":
+          origin.meaning = { value: value, status: 7 };
+          break;
+        case "factors":
+          origin.factors = { value: value, status: 7 };
+          break;
+        case "factorMeaning":
+          origin.factorMeaning = { value: value, status: 7 };
+          break;
+        case "parent":
+          origin.parent = { value: value, status: 7 };
+          break;
+        case "parent2":
+          origin.parent2 = { value: value, status: 7 };
+          break;
+        case "grammar2":
+          origin.grammar2 = { value: value, status: 7 };
+          break;
+        case "case":
+          const arrCase = value.split("#");
+          origin.case = { value: value, status: 7 };
+          origin.type = { value: arrCase[0] ? arrCase[0] : "", status: 7 };
+          origin.grammar = { value: arrCase[1] ? arrCase[1] : "", status: 7 };
+          break;
+        case "relation":
+          origin.relation = { value: value, status: 7 };
+          break;
+        case "confidence":
+          origin.confidence = parseFloat(value);
+          break;
+        case "locked":
+          origin.locked = JSON.parse(value);
+          break;
+        case "attachments":
+          //mData.attachments = value;
+          break;
+        default:
+          break;
+      }
+      return origin;
+    });
   }
 
-  const items = [
-    {
-      key: "user-dict",
-      label: intl.formatMessage({ id: "buttons.save.publish" }),
-    },
-  ];
   return (
     <div
       style={{
@@ -192,14 +193,15 @@ const WbwDetailWidget = ({
                     fieldChanged(e.field, e.value);
                   }}
                   onUpload={(fileList: UploadFile<IAttachmentResponse>[]) => {
-                    let mData = currWbwData;
+                    let mData = JSON.parse(JSON.stringify(currWbwData));
                     mData.attachments = fileList.map((item) => {
                       return {
-                        uid: item.uid,
-                        name: item.name,
-                        size: item.size,
-                        type: item.type,
-                        url: item.response?.data.url,
+                        id: item.response ? item.response?.data.id : item.uid,
+                        title: item.name,
+                        size: item.size ? item.size : 0,
+                        content_type: item.response
+                          ? item.response?.data.content_type
+                          : "",
                       };
                     });
                     setCurrWbwData(mData);