【发布时间】:2019-03-15 23:32:39
【问题描述】:
我有一个允许上传图片的 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);
};
它位于库 node_modules/react-dev-tools/node_modules/socketjs-client/lib/transport/websocket.js 内的文件 websocket.js 内
我已将范围缩小到此文件,并从我的项目代码库中排除了任何问题。
我的理论是我的应用程序的行为正在触发一个外部侦听器/案例,这会导致整个浏览器刷新。
我看到有问题的文件在 react-dev-tools 中,并认为删除此模块可以解决问题,但是,这也发生在我的生产环境中,所以我觉得删除它可能会破坏构建。
任何关于改进我的调查或潜在解决方案的想法都会有所帮助。
【问题讨论】:
标签: javascript reactjs websocket react-devtools