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