微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果else条件不会设置结果,则反应UseState

如何解决如果else条件不会设置结果,则反应UseState

好吧,所以尝试着想出最简单的方法来问这个。
首先,代码不是最漂亮的。这是我有史以来第三次做出反应,这是我在一周前开始的,大概在两个月前进行了编码。

我正在为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)
  }

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。