我有一个允许上传图片的 React Web 应用程序。
在对我的 API 执行多张图片(在本例中为 6)的 fetch POST 请求后,浏览器会自行刷新并重新加载当前页面。值得注意的是,此应用程序允许裁剪图像,因此对于用户上传的每张图像,都会上传第二张图像(裁剪)。所以上面的 6 张图片会产生 12 个 POST 请求。
刷新行为不一致且难以重现。我在发生这种行为的函数中插入了断点。使用 chrome 调试器工具,我逐步完成了流程,发现刷新发生在此调用之后。
this.ws.onmessage = function(e) {
debug('message event', e.data);
self.emit('message', e.data);
};
它位于websocket.js
库中的文件内node_modules/react-dev-tools/node_modules/socketjs-client/lib/transport/websocket.js
我已将其缩小到该文件,并排除了我的项目代码库中的任何问题。
我的理论是我的应用程序的行为正在触发一个外部侦听器/案例,这导致了完整的浏览器刷新。
我看到有问题的文件在里面react-dev-tools
,并认为删除这个模块可以解决问题,但是,这也发生在我的生产环境中,所以我觉得删除它可能会破坏构建。
任何关于改进我的调查或潜在解决方案的想法都会有所帮助。