react hooks中使用计时器每十秒加1.2 | setTotalData(totalData + 1.2)结果错误

需求:每十秒加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类型。

参考:

https://www.cnblogs.com/pzw23/p/14593207.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值