reactjs - 尚未单击按钮时显示 NaN 的 React 应用程序
问题描述
因此,当我正在学习并尝试做简单的反馈应用程序时,虽然用户尚未选择任何选项,但平均和正百分比显示 NaN 作为值。为什么会这样?我应该使用 .this 吗?感谢您提供任何帮助。我相信这很简单,但找不到任何解决方案。
console.log({sum})
console.log({counter})
const average = sum/counter;
const positivePercentage = (positive / counter * 100)
return(
<div>
<p>Good {good}</p>
<p>Neutral {neutral}</p>
<p>Bad {bad}</p>
<p>Total Feedbacks: {counter}</p>
<p>Average: {(Math.round(average*100)/100).toFixed(2)}</p>
<p>Positive: {(Math.round(positivePercentage*100)/100).toFixed(2)}%</p>
</div>
)
}
const Button = ({handleClick, choice}) => {
return(
<button onClick={handleClick}>
{choice}
</button>
)
}
const App = () => {
// save clicks of each button to own state
const [good, setGood] = useState(0)
const [neutral, setNeutral] = useState(0)
const [bad, setBad] = useState(0)
const [counter, setCounter] = useState(0)
const [sum, setSum] = useState(0)
const [positive, setPositive] = useState(0)
const voteGood = () => {
return (
setGood(good+1),
setCounter(counter+1),
setSum(sum+1),
setPositive(positive+1)
)
}
const voteNeutral = () => {
return(
setNeutral(neutral+1),
setCounter(counter+1),
setSum(sum+0)
)
}
const voteBad = () => {
return (
setBad(bad+1),
setCounter(counter+1),
setSum(sum-1)
)
}
const resetCounter = () =>{
return (
setGood(0),
setBad(0),
setNeutral(0),
setCounter(0),
setSum(0),
setPositive(0)
)
}
解决方案
除以 0,初始状态为counter
0。
const [counter, setCounter] = useState(0)
...
const average = sum/counter;
const positivePercentage = (positive / counter * 100)
NaN
虽然是一个错误的值,所以你可以在渲染时通过提供一个后备值来“保护”它们,即NaN || 0 // 0
.
const positive = 0;
const counter = 0;
const positivePercentage = (positive / counter * 100);
console.log('positivePercentage', positivePercentage); // NaN
console.log('safe positivePercentage', positivePercentage || 0); // 0
推荐阅读
- python - 以多行的块读取文件
- generics - 在 Array1 上创建一个泛型方法
- database - 如果没有数据,TDengine count() 不返回任何内容
- python - 在不解析错误消息的情况下获取有关完整性约束违规错误的信息
- python - K-Arms Bandit Epsilon-贪婪策略
- c++ - 如何在 Visual Studio C++ 中将西里尔文(俄语)字符输出到控制台?
- sql - SAS - 由于 Select 中的 case 语句,Group By 无法工作
- apache-beam - 如何在 Apache Beam 中实现类似于 Spark 的累加器的变量
- python - Python 3 + Click:当从另一个命令调用一个命令时,CLI 参数会被破坏
- sql - 不能混合聚合值和非聚合值