qs
相信前端同学大概对qs应该不陌生,我也是对他深信不疑
但,但,但.但是我线上环境出问题了,找了一下午+睡了一觉,才解决掉(也许是因为我太菜,但是我不承认)
问题描述
某一天的中午,产品给我发了个消息,说正式环境后台某个页面提交不成功,很急!!!!
吓得我午觉都没睡,开始看问题,页面提交无反应,没有调接口,也没有报错,纳尼???这什么玩意儿
打断点,发现表单提交的时候走到了 axios 就直接进入了 promise 的 padding 然后就进入 react 的无限循环,emmmm,无思路,测试了一大堆,改入参没用,使用 async 没用...
无解!!!因为用的 Jenkins 打包, 速度贼拉跨,打个包能等二十分钟,就搞了一下午,在最后关头,它报错了!
天不亡我,\
Uncaught (in promise) RangeError: Cyclic object value
于是开始百度,晓得了这个是循环引用导致的错误,然后就查到了QS
QS的记录里有这样的问题存在,目前还没有解决
解决方法
循环引用就是两个对象来回打架导致的,而且这俩对象还是同址,本是同根生相煎何太急啊喂
我使用的方法很简单,深拷贝
- JSON.stringify+JSON.parse
- for in
- 利用数组的Array.prototype.forEach进copy