问题描述
如果我在另一个带有路由 Age_n
的页面中出错,我试图弄清楚如何定向到我的主页 /
。我能够重定向到我的主页,并将 ErrorBoundary 包裹在我的组件中,但路由没有改变,并且立即恢复到相同的错误。 (我基本上是想在出现错误时显示主页)
我尝试在 ErrorBoundary 组件中使用 /results
和渲染函数,如下所示:
react-router-dom
但是再次出现错误,路线保持不变 render() {
if (this.state.hasError) {
return (
<Router>
<Switch>
<Route path="/" exact component={MyHomePage} />
</Switch>
</Router>);
} else {
return this.props.children;
}
}
(并且主页没有通过路线/results
呈现。为什么会发生这种情况?任何人都可以帮助理解原因。
谢谢。
解决方法
您可以尝试使用来自 react-router
的重定向组件。在你的 if 块中而不是返回 Router
你可以只返回
<Redirect to="/" />
Router and Switch
基本上匹配浏览器 URL 和导航,但在您的情况下,您希望根据条件以编程方式导航,因此 Redirect
更适合此处。