使用 React.js 创建了一个简单的 BMI 计算器。现在我正在努力做到这一点,如果结果不是健康的 BMI,则结果文本将显示为红色(我使用的是样式化组件)。我正在努力弄清楚我应该尝试在哪里插入它,无论是在 Form 还是 Result 元素中以及要使用哪些工具(我查看了 classNames 库并没有真正基于示例的想法如何轻松使用它)。将不胜感激任何人的帮助。粘贴表单和结果代码,因为这是最有意义的。
表单元素
const [height, setHeight] = useState();
const [weight, setWeight] = useState();
const [classification, setClassification] = useState();
const [bmi, setBmi] = useState();
const calculate = () => {
const bmi = (weight / (height / 100) ** 2).toFixed(2);
setBmi(bmi);
if (bmi < 18.5) {
setClassification("Underweight");
} else if (bmi > 18.5 && bmi <= 24.9) {
setClassification("Healthy");
} else if (bmi > 24.9 && bmi < 30) {
setClassification("Pre-obesity");
} else if (bmi < 35) {
setClassification("Obesity class I");
} else if (bmi < 40) {
setClassification("Obesity class II");
} else {
setClassification("Obesity class III");
}
};
const onSubmit = (event) => {
event.preventDefault();
calculate();
};
return (
<StyledForm onSubmit={onSubmit}>
<Formula />
<StyledTitle>Weight</StyledTitle>
<StyledInput
value={weight}
onChange={({ target }) => setWeight(target.value)}
required
min={26}
max={635}
placeholder="Enter weight in KG"
/>
<StyledTitle>Height</StyledTitle>
<StyledInput
value={height}
onChange={({ target }) => setHeight(target.value)}
required
min={54}
max={272}
placeholder="Enter height in CM"
/>
<Button />
<Result bmi={bmi} classification={classification} />
</StyledForm>
);
};
export default Form;
结果元素
const Result = ({ bmi, classification }) => {
return (
<StyledResultWrapper>
<StyledResult>{bmi && <>Your BMI is {bmi}</>}</StyledResult>
<StyledResult>{classification}</StyledResult>
</StyledResultWrapper>
);
};
export default Result;
谢谢您的帮助。