【发布时间】:2017-08-10 02:22:28
【问题描述】:
我有一个在检查这样的条件后重定向的路由
<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>
);
}
我的应用程序组件包含在 BrowserRouter 中,例如 thi
ReactDOM.render(<BrowserRouter>
<App/>
</BrowserRouter>,
document.getElementById('root')
);
当我直接在浏览器中点击 url 时,像 'localhost:3000/intro' 组件安装成功,但是当它通过重定向时它不显示该组件。我该如何解决?
编辑
因此缺少一个细节,我尝试创建另一个项目来重现该问题。 我的 App 组件是来自 mobx-react 的观察者,它的导出如下所示
let App = observer(class App { ... })
export default App
我已经使用示例代码创建了这个 repo 来重现你可以使用它的问题 https://github.com/mdanishs/mobxtest/
因此,当组件被包装到 mobx-react 观察者中时,重定向不起作用,否则它可以正常工作
【问题讨论】:
-
您在控制台中看到任何错误吗?
-
@TharakaWijebandara 控制台中没有错误,事实上我只是尝试使用链接,它也不起作用。不知道出了什么问题。
标签: javascript reactjs react-router react-router-v4