数字id太长导致删除&更新失败

大家看这删除功能啊

他总是报操作失败

那原因其实就是他传给后台的这个 id

不对我们先来

抓下包哈

大家看他后台返回的 id 是54560结尾

但是呢他提示出来的是包括(删除)请求的时候这个 id

也是54600都不对

为什么会这样呢

我们先把刚才这个

正确的 id 放到控制台里直接执行

大家看!他也变成54600了

也就是说:在 js 里面

整型他有精度问题

只要超过2的53次方

都是(有可能)有问题的

也就是说:超过这个数都有可能会有问题

我们来试一下啊

大家看!不对了

大家看

都不对了

那这个问题呢

回头有机会我们单独出一期视频

跟浮点数的精度咱们一起来分享

今天我们主要来说一下

怎么解决这个问题

第一个方法最简单有效

就是把接口返回的这个数据

变成字符串类型的

直接就可以解决

那如果后台接口改不了

其实也很简单

比如我们现在这个项目

他用的是axios嘛

我们先首先把这个 json-bigint

这个包导进来

然后呢

我们在这个 axios 请求这里做一下改动

先把这个bigint导进来

倒进来以后

我们在这在请求的地方加一个参数

叫 transformResponse

这 copilot 给提示了

就这样写

把这个加上一个类似于这个

响应的转换器

用这个 bigint 去 parse

这样的话呢

我们在使用的地方完全不用改

大家看现在他打印的这个

响应的结果啊

这个 id 是不对的

然后呢我们把这保存一下

刷新

好我们再看一下

0 id

他就变成 big number 了

这时我们再点删除打卡

这个 id 就对了

那还有一种方法呢就是

我们在这导进来以后哈

我们可以这样写

cont JSONBigIntStr = ...

调一下这个

里边传一个 storeAsString = true 也就说他自动

把这个转成String类型的

然后我们用这个去做格式化

好再刷新一下

好再看一下

他看这就是一个做串类型的了

这样就更没有问题了

最后更新于