Резюме
Я создаю электронное приложение с реагировать. В настоящее время у меня есть 2 основных маршрута - страница входа и панель инструментов. Приборная панель имеет 3 суб-маршрута, управляемых боковой панелью. 3 вспомогательных маршрута - дом, установка и настройки - отображаются в основной области содержимого рядом с боковой панелью. Этот подход прекрасно работает сам по себе. Проблема возникает, когда я в строке на странице входа. Мне удалось проложить маршрут от имени входа до области главной страницы, но при этом не удалось отобразить суб-маршруты.
Проблема
Когда я перехожу от входа в систему к панели инструментов, мой макет выглядит нормально. Как только я нажимаю на опцию на боковой панели, DOM становится пустым. Я передвигаюсь по своим маршрутам и дивам, но мне не так повезло. Вот код для моей настройки. Иногда я даже вижу флаг sh основного контента, который должен быть там до того, как он пропадет.
Еще одна вещь, которую я пробовал, - это изменить маршрутизатор точки входа, чтобы включить <Switch>
над 2 маршруты. С этой настройкой я мог перейти от входа в систему, к панели инструментов, но щелкнув опцию боковой панели, я мог бы вернуться к входу в систему.
index. js - точка входа
const routing = (
<HashRouter>
<Route exact path="" component={Auth}/>
<Route exact path="/dashboard" component={Layout} />
</HashRouter>
)
ReactDOM.render(routing, document.getElementById('root'));
Когда ввод от auth правильный, я запускаю это:
if(this.state.loginResult){
return(
<Redirect to={'/dashboard'} />
)
Макет. js - приборная панель.
render() {
return (
<HashRouter>
<div>
<Installer onRef={ref => (this.child = ref)} />
<div className={'sideBar'}>
<div className={'navSelect'}>
<NavLink to={'/home'} activeClassName="navOptionActive" >
<div className={'navOption'} >
<HomeIcon
style={{fontSize: 75, textAlign: 'center', alignSelf: 'center',
color: 'white', marginTop: 10, marginBottom: 0}}/>
<h1>Home</h1>
</div>
</NavLink>
<NavLink to={'/test'} activeClassName="navOptionActive">
<div className={'navOption'}>
<Brightness3Icon
style={{fontSize: 75, textAlign: 'center', alignSelf: 'center',
color: 'white', marginTop: 10, marginBottom: 0}}/>
<h1>Nightly</h1>
</div>
</NavLink>
<div className={'bottom'}>
<NavLink to={'/nothing'} exact activeClassName="navOptionActive">
<div className={'navOption'} id={'settings'}>
<SettingsIcon
style={{fontSize: 75, textAlign: 'center', alignSelf: 'center',
color: 'white', marginTop: 10, marginBottom: 0}}/>
<h1>Settings</h1>
</div>
</NavLink>
</div>
</div>
</div>
{/*Main content area. This is where the content from the sidebar options will be displayed. */}
<div className={'mainContent'} >
<Route path="/home">
<App />
</Route>
<Route path="/test">
<TestPage install={this.install} />
</Route>
</div>
</div>
</HashRouter>
Также обратите внимание, что у меня еще нет связанной страницы настроек, поэтому одна из навигационных ссылок ведет к / ничему.