前言
近期项目开发技术开始转向react。对于react中的state管理,目前主要使用redux或mobx来进行管理。在作出比较后,选择mobx来进行state的管理微笑。
开展
使用es6+react+mobx,实现需求,疯狂的编写代码奋斗。一个巨大的坑悄悄的在等着踩大哭。
高潮
咦,换个浏览器来跑跑,看看效果如何。满心期待中羡慕。一开始就是使用chrome开发调试,chrome就不用管了。next --》firefox。firefox很给力,一切正常,没毛病。那再来下一个Safari。页面打开,what!!!怎么一直在装圈圈惊讶。说是迟那时快,打开浏览器控制台。一把红色的小叉叉提示出问题了难过。仔细一看控制台输出如下error:Reaction doesn’t converge to a stable state after 100 iterations。。。啥,遍历了一百次,这是什么鬼。其他浏览器都是正常的呀。而且es6转es5也考虑了兼容性,使用了es5-shim。
定位过程
既然出现了,那就得消灭它。一步步得开始漫长的定位过程。是不是非法操作state。于是对有操作state的地方进行详细排查,删除复杂逻辑代码,删除到最后就剩下一个框框了可怜。但是问题依然存在,啊~~~要疯啦骂人。好吧,这肯定不是我的代码写的有问题,我确定,因为哥的代码都快删除光了可怜。既然业务代码没啥问题,那就对引入的模块源码开始质疑了。是不是源码有问题。开启调试模式,重点盯在抛异常的这段源代码上。附上这段源码: