Reactjs 为什么<;链接到/&引用&燃气轮机;在我的React应用程序中导致无限循环/崩溃?
我目前正在开发一个React+Redux前端应用程序,我遇到了一个我似乎无法解释的问题。当使用组件时,它可以从除主页外的任何其他页面(即/route)正常工作。从主页单击时,应用程序/浏览器会崩溃 我在标签中包括了react-router和react-redux,因为我使用了这些LIB,我不知道它们是否真的对问题的原因有任何影响 我有以下设置: src/index.jsReactjs 为什么<;链接到/&引用&燃气轮机;在我的React应用程序中导致无限循环/崩溃?,reactjs,react-redux,react-router,Reactjs,React Redux,React Router,我目前正在开发一个React+Redux前端应用程序,我遇到了一个我似乎无法解释的问题。当使用组件时,它可以从除主页外的任何其他页面(即/route)正常工作。从主页单击时,应用程序/浏览器会崩溃 我在标签中包括了react-router和react-redux,因为我使用了这些LIB,我不知道它们是否真的对问题的原因有任何影响 我有以下设置: src/index.js ... render( <Provider store={store}> <Bro
...
render(
<Provider store={store}>
<BrowserRouter>
<Fragment>
<Header/>
<Switch>
<PrivateRoute path="/" exact={true} component={Home}/>
<PrivateRoute path="/profile" exact={true} component={Profile}/>
<PrivateRoute path="/settings" component={settings}/>
<Route path="/login" component={loginPage}/>
<Route path="/logout" component={logoutPage}/>
</Switch>
<Footer/>
</Fragment>
</BrowserRouter>
</Provider>,
document.getElementById('mount')
);
...
。。。
渲染(
,
document.getElementById('mount')
);
...
src/layout/footer.js
...
<div className="col">
<ul>
<li>
<Link to="/">Privacy</Link>
</li>
<li>
<Link to="/">Another Link</Link>
</li>
<li>
<Link to="/">Disclaimer</Link>
</li>
<li>
<Link to="/">Cookies policy</Link>
</li>
</ul>
</div>
...
export default Footer;
。。。
-
隐私
-
另一环节
-
免责声明
-
Cookies策略
...
导出默认页脚;
src/pages/home.js
...
render(){
var homePage = (
<Fragment>
<HeroComp />
<Explainer />
<StoreFinder />
<CalloutComp />
</Fragment>
);
return homePage;
}
...
export default connect(mapStateToProps, null)(Home);
。。。
render(){
var主页=(
);
返回主页;
}
...
导出默认连接(mapStateToProps,null)(主);
单击页脚中的任何组件都会将我发送到主页。如果您在除主页以外的任何页面上,它都会正确执行此操作。
但是,如果你已经在主页上点击了链接,我希望它要么什么也不做,但它似乎会使应用程序/浏览器崩溃。我最好的猜测是,它不知何故启动了一个无限循环或内存泄漏,但无法找出原因
[编辑]
澄清一下,没有实际的错误。browsertab只是冻结并没有响应。唯一的解决办法是关闭选项卡。回答我自己的问题(如果没有关于问题的更多信息,没有人能够解决这个问题……)
经过更多的研究/尝试,我发现问题在于Map.js中的requestAnimationFrame调用。事实证明,这是我创建的一个google地图组件(使用google地图react),它将在onComponentMount事件中初始化google地图元素
但是,如果我在一个挂载了组件的页面上,并尝试从自身链接到该页面(例如,主页并单击徽标或主页按钮),那么该组件将尝试再次挂载自身(而不会正确破坏现有的google maps实例),并导致无限循环
为了“修复”这个问题,我只添加了一个条件语句来检查映射是否已加载
if(!this.map))this.initMap()代码>
错误是什么?抱歉,忘记添加。没有实际的错误。浏览器选项卡只是冻结并没有响应。它不会引发任何错误??通常,当它是一个记忆韭菜或无限循环时,react抛出一个error,不幸的是不是。。我试着在点击链接的时候让inspector保持打开状态,但它只是冻结了整个选项卡。但我从未让它运行太久。我可以试试看会发生什么。。也许React/Firefox最终会给出一条错误消息。我会回来报到的!编辑结果显示firefox一直在提示:“网页正在减慢你的浏览器速度。你想做什么?[停止][等待]”。除此之外,什么也没有发生。