У меня есть маршрут, который перенаправляет после проверки условия вроде этого
<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 успешно установлен, но когда он проходит через перенаправление, он не отображает компонент. Как это исправить?
Изменить
Итак, одна деталь отсутствовала, и я попытался создать еще один проект, чтобы воспроизвести проблему. Мой компонент приложения является наблюдателем от mobx-реакции и экспортируется, как показано ниже.
let App = observer(class App { ... })
export default App
Я создал это репо с образцом кода, чтобы воспроизвести проблему, которую вы можете использовать. https://github.com/mdanishs/mobxtest/
Итак, когда Компоненты завернуты в наблюдателя mobx-реагирования, перенаправление не работает, он отлично работает