Przeglądaj źródła

数据变化时 onData

visuddhinanda 1 rok temu
rodzic
commit
adc4a6a992

+ 32 - 33
dashboard-v4/dashboard/src/components/task/ProjectTask.tsx

@@ -1,4 +1,3 @@
-
 import { Tabs } from "antd";
 
 import TaskList from "../../components/task/TaskList";
@@ -10,9 +9,9 @@ import { ITaskData } from "../../components/api/task";
 interface IWidget {
   studioName?: string;
   projectId?: string;
+  onData?: (data: ITaskData[]) => void;
 }
-const ProjectTask = ({studioName, projectId}:IWidget) => {
-
+const ProjectTask = ({ studioName, projectId, onData }: IWidget) => {
   const [tasks, setTasks] = useState<ITaskData[]>();
   return (
     <>
@@ -27,39 +26,39 @@ const ProjectTask = ({studioName, projectId}:IWidget) => {
                 editable
                 studioName={studioName}
                 projectId={projectId}
-                onLoad={(data) => setTasks(data)}
-                onChange={(data: ITaskData[]) =>
-                  setTasks((origin) => {
-                    data.forEach((input) => {
-                      const old = origin?.find(
-                        (value) => value.id === input.id
-                      );
-                      if (old) {
-                        //找到了更新旧的
-                        origin?.forEach(
-                          (
-                            value: ITaskData,
-                            index: number,
-                            array: ITaskData[]
-                          ) => {
-                            if (value.id === input.id) {
-                              array[index] = input;
-                            }
+                onLoad={(data) => {
+                  setTasks(data);
+                  onData && onData(data);
+                }}
+                onChange={(data: ITaskData[]) => {
+                  let origin: ITaskData[] = JSON.parse(JSON.stringify(data));
+                  data.forEach((input) => {
+                    const old = origin?.find((value) => value.id === input.id);
+                    if (old) {
+                      //找到了更新旧的
+                      origin?.forEach(
+                        (
+                          value: ITaskData,
+                          index: number,
+                          array: ITaskData[]
+                        ) => {
+                          if (value.id === input.id) {
+                            array[index] = input;
                           }
-                        );
-                      } else {
-                        //没有找到就添加
-                        if (origin) {
-                          origin = [...origin, input];
-                        } else {
-                          origin = [input];
                         }
+                      );
+                    } else {
+                      //没有找到就添加
+                      if (origin) {
+                        origin = [...origin, input];
+                      } else {
+                        origin = [input];
                       }
-                    });
-
-                    return origin;
-                  })
-                }
+                    }
+                  });
+                  setTasks(origin);
+                  onData && onData(data);
+                }}
               />
             ),
           },