【问题标题】:using prop value in useState hook gives undefined value在 useState 钩子中使用 prop 值会给出未定义的值
【发布时间】:2020-11-28 08:58:40
【问题描述】:

拥有一个使用来自 props 的钩子设置状态的 React 组件。
道具存储步骤。 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 步进器演示中的示例没有使用 prop 来设置活动 Step,而是将其设置为 0。

storedStep 的定义位置。

在直接父组件中定义。

我在直接父级中使用了另一个钩子

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

并在这个父级的useEffect中传递setProjDetail函数

 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 行)

【问题讨论】:

标签: reactjs react-hooks react-props


【解决方案1】:

我通过仅在检查属性“requeststatus”是否存在后在父组件中渲染子组件来解决此问题

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

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

}

【讨论】:

  • 查看conditional rendering 上的反应文档,类似于projDetail.requeststatus &amp;&amp; &lt;Stepper ...
猜你喜欢
  • 2021-07-30
  • 2020-12-05
  • 2022-01-21
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 2021-12-29
  • 2021-01-16
相关资源
最近更新 更多