【问题标题】:React UseState if else condition won't set resultReact UseState if else 条件不会设置结果
【发布时间】:2020-12-18 08:14:10
【问题描述】:

好的,所以试着想出最简单的方法来问这个问题。
首先,代码不是最漂亮的。这是我在 React 中所做的第三件事,我是在一周前开始的,可能在两个多月前开始编写代码。

我正在制作一个接收数据的表格,对于简单的 COVID:firstName, lastName, email, and risklevel
风险等级由回答为“是”的问题数决定;在 if-else-statements 中也为真。​​

计数工作正常 - 它根据回答正确的问题记录正确的数字。表格信息有效;唯一的问题是,这不会采用我的risklevel 状态并根据三个条件应用它:

function ModalPopUp() {
  const [show, setShow] = useState(false);
  const handleClose = () => setShow(false);
  const handleShow = () => setShow(true);
  
  const [FirstName, setFirstName] = useState('');
  const [LastName, setLastName] = useState('');
  const [email, setEmail] = useState('');
  const [riskLevel, setRiskLevel] =  useState(0);
  const [dryCough, setDryCough] = useState(null);
  const [sob, setSob] = useState(null);
  const [Aches, setAches] = useState(null);
  const [soreThroat, setSoreThroat] = useState(null);
  const [headache, setHeadache] = useState(null);
  const [fatigue, setFatigue] = useState(null);
  const [exposure, setExposure] = useState(null);
  // const [age, setAge] = useState(0)
  // const [count, setCount] = useState(0)
  // const [patients, SetPatients] = useState([]);
  
  const riskState = () => {
  
    let count = 0;
    if(dryCough === true) {
      count++ 
    }
    if(sob === true) {
      count++
    }
    if(Aches === true) {
      count++ 
    }
    if(soreThroat === true) {
      count++
      
    }
    if(headache === true) {
      count++
      
    }
    if(fatigue === true) {
      count++
    }
    if(exposure === true) {
      count++
    }
    if (count <= 2) {
      setRiskLevel({riskLevel: riskLevel + 1})
    }
    if (count > 2 && count <= 4) {
      setRiskLevel({riskLevel: riskLevel + 2})
    }
    
    if (count > 4) {
      setRiskLevel({riskLevel:  riskLevel + 3})
    }
    console.log(dryCough);
    console.log(count);
    console.log(riskLevel)
  }

【问题讨论】:

  • 你能试着写完整的句子吗?你说你想简单地问这个,然后你去连接没有标点符号的句子。为什么让我们难以解析您的问题?
  • 我很抱歉,克里斯蒂安,我有书写障碍,所以有时短会变得太长。我写的我认为会导致连续的句子和标点错误。我尽量避免这种情况,但尤其是在试图解释我无法理解的事情时。
  • 感谢您修复它。现在好多了!

标签: arrays reactjs if-statement setstate use-state


【解决方案1】:

很可能 riskLevel 是关闭捕获的过时值。尝试改用回调语法。

setRiskLevel(riskLevel => ({riskLevel: riskLevel + 1}))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2016-09-07
    • 2016-02-11
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多