簡體   English   中英

在 useState 鈎子中使用 prop 值會給出未定義的值

[英]using prop value in useState hook gives undefined value

有一個 React 組件,它使用 props 中的鈎子設置 state。
道具存儲步驟。 prop 值用於在掛鈎中設置狀態。

但是 state 設置為 undefined,即使 console.log 說 prop 有一個數值

line 41     console.log(storedStep)
      const [activeStep, setActiveStep] = React.useState(1);
      const [activeStep2, setActiveStep2] = React.useState(storedStep);
line 44      console.log(activeStep)
line 45       console.log(activeStep2)

在此處輸入圖像描述

這是用於材料ui步進器https://material-ui.com/components/steppers/

我正在設置 Stepper https://codesandbox.io/s/qhhv1?file=/demo.js步進器的活動步驟 步進器演示中的示例不使用道具來設置活動步驟,而是將其設置為0。

定義了 storedStep 的位置。

它在直接父組件中定義。

我在直接父母中使用另一個鈎子

const [projDetail, setProjDetail] = useState({});

並在此父級的 useEffect 中傳遞 setProjDetail function

 useEffect(() => {
    async function fetchData() {
      await getDetailFunc (email, projectid, setProjDetail);
    }

    fetchData();
  }, [email, projectid,getDetailFunc]);

getDetailFunc 將獲取詳細信息並使用 setProjDetail 設置 projDetail

storedState 是傳遞給子進程的 projDetail 的屬性

storedStep={projDetail.requeststatus}

storedStep 在某個點(第 41 行)正確獲取值 0。 但無法將其設置為 activeStep(第 45 行)

在我的情況下,我通過僅在檢查屬性“requeststatus”是否存在后才在父組件中渲染子組件來解決此問題

if (projDetail.hasOwnProperty("requeststatus")) {

.....
...
    <Stepper
      steps={steps}
      storedStep={projDetail.requeststatus}
      saveStageFunc={saveStageinDynamo}
      updateKey={{ email, projectid }}
      labelArray={processStates}
    />

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM