Reactjs 反应路由器<;重定向>;不';t在App.js的顶层工作,它定义了<;路由器>;

Reactjs 反应路由器<;重定向>;不';t在App.js的顶层工作,它定义了<;路由器>;,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,My在MyApp.js下的所有组件上都能正常工作,它定义了结构 例如,如果我在下面的某个地方有,如果出现错误,这将正确地重定向到/error: SomeComponent.js 返回( { 错误消息&& } 但是在App.js的顶层,我还需要检查错误并在必要时重定向。这也是我定义核心结构的地方。出于某种原因,此顶层重定向不起作用: App.js 返回( {/*我在路由器内部,所以不应该有任何问题*/} {/*检查错误并按常规重定向*/} { 错误消息&& } {/*组件具有开关/路

My
在MyApp.js下的所有组件上都能正常工作,它定义了
结构

例如,如果我在下面的某个地方有
,如果出现错误,这将正确地重定向到
/error

SomeComponent.js

返回(
{
错误消息&&
}
但是在App.js的顶层,我还需要检查错误并在必要时重定向。这也是我定义核心
结构的地方。出于某种原因,此顶层重定向不起作用:

App.js

返回(
{/*我在路由器内部,所以不应该有任何问题*/}
{/*检查错误并按常规重定向*/}
{
错误消息&&
}      
{/*组件具有开关/路由*/}
);

知道为什么吗?仅供参考,路由器是从“react Router dom”中定义为
import{BrowserRouter as Router}

你在哪里有/error的路由?你没有任何错误消息,只是没有工作?我有
Switch..Route
在一个名为
的组件中,它位于App组件下。也许这就是它实际上不工作的原因。这应该是问题所在,重定向在切换路由之外。
return (<>      
    {
        error.message && <Redirect to="/error" />
    }
return (<>
        <div className="App">
            <Router>
                {/* I am inside Router, so there shouldn't be any issues */}

                {/* Check for errors and redirect as usual */}
                {
                   error.message && <Redirect to="/error" />
                }      

                <Main /> {/* The <Main> component has Switch/Route */}
          
            </Router>
        </div>
       );