【问题标题】:Passing state as initial value to another state is undefined将状态作为初始值传递给另一个状态是未定义的
【发布时间】:2022-01-08 19:06:58
【问题描述】:

我通过从另一个数据中提取数据来设置正确答案状态的初始值。它给了我不确定的。但相同的值是正确的控制台日志记录。

  let refinedAnswer = questions[currentQuestion]?.correct_answer;

  //correct answer for each question
  const [correctAnswer, setCorrectAnswer] = React.useState(refinedAnswer);

 console.log("CORRECT ANS", correctAnswer); //undefined
 console.log("CORRECT ANS", questions[currentQuestion]?.correct_answer); //value

【问题讨论】:

  • 问题是,当第一次渲染时,由于可选的链接,“正确答案”是未定义的。这 ?。运算符就像 .链接运算符,除了如果引用为空(null 或未定义)而不是导致错误,表达式短路并返回未定义的值。您可以尝试在 useEffect 钩子中检查是否未定义提炼答案,然后更新状态

标签: reactjs react-native


【解决方案1】:

您需要使用 useEffect 中的值。 例如:

useEffect(() => setCorrectAnswer(refinedAnswer), [refinedAnswer])

【讨论】:

    【解决方案2】:

    当“未定义”变成一个值时,您需要添加 useEffect 挂钩来更新状态。然后用正确的值重新渲染组件:

     React.useEffect(() => {
        setCorrectAnswer(refinedAnswer);
      }, [refinedAnswer]);
    
      console.log("CORRECT ANS", correctAnswer);
    

    https://codesandbox.io/s/exciting-sanne-qr0cg?file=/src/App.js

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 2019-12-05
      • 2021-11-12
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 2016-04-04
      • 2023-01-27
      • 2018-07-28
      相关资源
      最近更新 更多