소스 검색

fix revisions not updating

Ivan Galakhov 4 년 전
부모
커밋
49c3f56d38
2개의 변경된 파일41개의 추가작업 그리고 30개의 파일을 삭제
  1. 3 7
      dashboard/src/components/form-refactor/PorterForm.tsx
  2. 38 23
      dashboard/src/components/form-refactor/PorterFormWrapper.tsx

+ 3 - 7
dashboard/src/components/form-refactor/PorterForm.tsx

@@ -39,6 +39,8 @@ interface Props {
   addendum?: any;
   saveValuesStatus?: string;
   showStateDebugger?: boolean;
+  currentTab: string;
+  setCurrentTab: (nt: string) => void;
 }
 
 const PorterForm: React.FC<Props> = (props) => {
@@ -50,13 +52,7 @@ const PorterForm: React.FC<Props> = (props) => {
     formState,
   } = useContext(PorterFormContext);
 
-  const [currentTab, setCurrentTab] = useState(
-    props.leftTabOptions?.length > 0
-      ? props.leftTabOptions[0].value
-      : formData.tabs?.length > 0
-      ? formData.tabs[0].name
-      : ""
-  );
+  const { currentTab, setCurrentTab } = props;
 
   const renderSectionField = (field: FormField): JSX.Element => {
     const bundledProps = {

+ 38 - 23
dashboard/src/components/form-refactor/PorterFormWrapper.tsx

@@ -1,4 +1,4 @@
-import React from "react";
+import React, { useState } from "react";
 
 import PorterForm from "./PorterForm";
 import { PorterFormData } from "./types";
@@ -17,7 +17,6 @@ type PropsType = {
   color?: string;
   addendum?: any;
   saveValuesStatus?: string;
-  externalValues?: any;
   showStateDebugger?: boolean;
 };
 
@@ -34,31 +33,47 @@ const PorterFormWrapper: React.FunctionComponent<PropsType> = ({
   color,
   addendum,
   saveValuesStatus,
-  externalValues,
   showStateDebugger,
 }) => {
+  const hashCode = (s: string) => {
+    return s.split("").reduce(function (a, b) {
+      a = (a << 5) - a + b.charCodeAt(0);
+      return a & a;
+    }, 0);
+  };
+
+  const [currentTab, setCurrentTab] = useState(
+    leftTabOptions?.length > 0
+      ? leftTabOptions[0].value
+      : formData.tabs?.length > 0
+      ? formData.tabs[0].name
+      : ""
+  );
+
   return (
-    <>
-        <PorterFormContextProvider
-          rawFormData={formData as PorterFormData}
-          overrideVariables={valuesToOverride}
+    <React.Fragment key={hashCode(JSON.stringify(formData))}>
+      <PorterFormContextProvider
+        rawFormData={formData as PorterFormData}
+        overrideVariables={valuesToOverride}
+        isReadOnly={isReadOnly}
+        onSubmit={onSubmit}
+      >
+        <PorterForm
+          showStateDebugger={showStateDebugger}
+          addendum={addendum}
           isReadOnly={isReadOnly}
-          onSubmit={onSubmit}
-        >
-          <PorterForm
-            showStateDebugger={showStateDebugger}
-            addendum={addendum}
-            isReadOnly={isReadOnly}
-            leftTabOptions={leftTabOptions}
-            rightTabOptions={rightTabOptions}
-            renderTabContents={renderTabContents}
-            saveButtonText={saveButtonText}
-            isInModal={isInModal}
-            color={color}
-            saveValuesStatus={saveValuesStatus}
-          />
-        </PorterFormContextProvider>
-    </>
+          leftTabOptions={leftTabOptions}
+          rightTabOptions={rightTabOptions}
+          renderTabContents={renderTabContents}
+          saveButtonText={saveButtonText}
+          isInModal={isInModal}
+          color={color}
+          saveValuesStatus={saveValuesStatus}
+          currentTab={currentTab}
+          setCurrentTab={setCurrentTab}
+        />
+      </PorterFormContextProvider>
+    </React.Fragment>
   );
 };