Javascript 反应速记条件输出错误数据

Javascript 反应速记条件输出错误数据,javascript,reactjs,Javascript,Reactjs,React不能用其速记条件语法处理多个&&条件吗?我一直在这个对我来说毫无意义的问题上绞尽脑汁。我有一个条件,我只想在defaults等于true且familyDeductableMultiplier等于一个数字的情况下放置数据,但由于某些原因,即使不应满足此条件,它仍在满足,因此选择为空 if (item.name === 'familyDeductibleMultiplier') { return ( <div key={item.name} className='form

React不能用其速记条件语法处理多个&&条件吗?我一直在这个对我来说毫无意义的问题上绞尽脑汁。我有一个条件,我只想在defaults等于true且familyDeductableMultiplier等于一个数字的情况下放置数据,但由于某些原因,即使不应满足此条件,它仍在满足,因此选择为空

if (item.name === 'familyDeductibleMultiplier') {
  return (
    <div key={item.name} className='form-row'>
      <label>{item.desc}</label>
      <select
        name={item.name}
        onChange={gatherFormData}
        onBlur={fillNextInput}
      >
        {!defaults && <option value='0'>-Select-</option>}
        {defaults &&
          typeof familyDeductibleMultiplier === 'number' && (
            <option value={familyDeductibleMultiplier}>
              {familyDeductibleMultiplier}
            </option>
          )}
        {/* {item.filler !== undefined &&
          item.filler.map(item => {
            return (
              <option key={item.index} value={item.index}>
                {item.desc}
              </option>
            );
          })} */}
      </select>
    </div>
  );
}

因此,当您的
默认值
true
并且您检查FamilyDeductableMultiplier(其值为
未定义
)是否为一个数字时,它将成为一个数字,因为
parseFloat()
,并且该行仍将是输出。希望这有帮助。

您尝试过十进制运算符吗?React速记语法使用类似于三进制运算符的东西,如果该条件有效,则输出为JSX。您是否有机会使用
parseInt()/parseFloat()
将FamilyDeductableMultiplier转换为数字?是的,我使用的是parseFloat()。您完全可以在速记语法中使用多个条件。我会检查您的react-dev工具,或者只是加入一些日志来澄清为什么这种情况不正确。
if (item.type === 'Long') {
  this.arr.push({ [e.target.name]: parseFloat(e.target.value) });
  this.setState({
    [e.target.name]: parseFloat(e.target.value),
  });
}
if (item.type === 'Long') {
     // event.target.value here is undefined
    this.arr.push({ [e.target.name]: parseFloat(e.target.value) }); //using parseFloat() on that undefined changes the type of undefined to number (even if it's undefined)
      this.setState({
        [e.target.name]: parseFloat(e.target.value),
      });
    }