需求:每十秒加1.2
报错:变量加1.2,但第二次开始变成很多位小数,计算错误
关键逻辑代码如下:
const [totalData, setTotalData] = useState(10485760);
const myRef = useRef(null);
myRef.current = () => {
setTotalData((Number(totalData) + Number(1.2)).toFixed(1));
};
useEffect(() => {
let timer = setInterval(() => myRef.current(), 10000);
return () => {
clearInterval(timer);
};
}, []);
error第一种:直接加1.2
setTotalData(totalData + 1.2);
结果如下:
error第二种:每个都转为number类型
setTotalData(Number(totalData) + Number(1.2));
结果如下:
success!!!!第三种:都转为number类型,且保留一位小数
setTotalData((Number(totalData) + Number(1.2)).toFixed(1));
结果如下:
原因:
➕会让括号里面的变成string类型,然而toFixed()只支持前面是number类型的,因此需要给➕左右的都变成number类型。如果是*,那么则不需要,会自动转换为number类型。
参考: