我有一条路由,检查条件后会重定向,就像这样
<Route exact path="/" render={()=>(
Store.isFirstTime ? <Redirect to="intro" /> : <Home state={Store}/>)}/>
当条件为真但组件未安装时,URL会发生更改。其余组件代码如下所示。
render() {
return (
<div>
...
<Route exact path="/" render={()=>(
Store.isFirstTime ? <Redirect to="intro" /> : <Home state={Store} />
)} />
<Route path="/intro" render={()=>(<IntroWizard state={Store.userInfo}/>)} />
<Route path="/home" render={()=>(<Home state={Store}/>)} />
<Route render={()=>(<h1>404 Not Found</h1>)} />
<Footer />
</div>
);
}
我的App组件包含在BrowserRouter中,像这样
ReactDOM.render(<BrowserRouter>
<App/>
</BrowserRouter>,
document.getElementById('root')
);
当我直接在浏览器中输入'localhost:3000/intro'时,组件能够成功挂载,但是当通过重定向进入时,组件无法显示。我该如何解决?
编辑
所以还有一个细节缺失,并且我尝试创建另一个项目以复现该问题。我的App组件是mobx-react的观察者,并按如下方式导出。
let App = observer(class App { ... })
export default App
我已创建此存储库,其中包含一个示例代码以重现此问题,您可以使用它https://github.com/mdanishs/mobxtest/
当组件被包裹在mobx-react观察者中时,重定向无法正常工作,否则它将正常工作。