Reactjs 为什么<;链接到/&引用&燃气轮机;在我的React应用程序中导致无限循环/崩溃?

Reactjs 为什么<;链接到/&引用&燃气轮机;在我的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

我目前正在开发一个React+Redux前端应用程序,我遇到了一个我似乎无法解释的问题。当使用组件时,它可以从除主页外的任何其他页面(即/route)正常工作。从主页单击时,应用程序/浏览器会崩溃

我在标签中包括了react-router和react-redux,因为我使用了这些LIB,我不知道它们是否真的对问题的原因有任何影响

我有以下设置:

src/index.js

...

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一直在提示:“网页正在减慢你的浏览器速度。你想做什么?[停止][等待]”。除此之外,什么也没有发生。