Я новичок в реагировании на роутер и не могу заставить его работать должным образом.Я создаю SPA, имеющий фрейм с верхним, нижним и нижним колонтитулами, и предполагается, что центральное представление будет меняться в зависимости от выбранного пути.
Верхняя иерархия DOM выглядит следующим образом:
index.js
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
App.jsx
render() {
return (
<div >
<Router history={history}>
<div>
<PrivateRoute exact path="/" component={DashboardLayout} />
<Route path="/#/login" component={LoginForm} />
</div>
</Router>
</div >
);
}
Dashboard.jsx
render() {
if (this.state.toLogin === true) {
return <Redirect to={{ pathname: '/#/login', state: { from: this.props.location } }} />
}
return (
<div className="app">
<AppHeader fixed>
<DefaultHeader/>
</AppHeader>
<div className="app-body">
<AppSidebar fixed display="lg">
<AppSidebarHeader />
<AppSidebarForm />
<AppSidebarFooter />
<AppSidebarMinimizer />
</AppSidebar>
<main className="main">
<Container fluid>
<Switch>
<Route path="/#/items" name="Items" component={ItemsTable} />
<Route path="/#/profile" name="Profile" component={ProfileManager} />
<Redirect from="/" to="/#/items" />
</Switch>
</Container>
</main>
</div>
<AppFooter>
<DefaultFooter />
</AppFooter>
</div>
);
}
Компонент PrivateRoute просто проверяет, вошел ли пользователь в конечном итогеперенаправление на форму входа в систему.
После входа я ожидаю увидеть в центральном представлении (обернутом контейнером) представление ItemTables, но этого не происходит.
Кроме того, если перейти к / # / items или/ # / вручную (путем ввода пути в браузере или щелчка в пользовательском интерфейсе) центральное представление в контейнере не изменяется.
Я получаю сообщение об ошибке:
Warning: You tried to redirect to the same route you're currently on: "/"
Все время, и я подозреваю, что это связано.
Наконец, я использую Redux.
Заранее спасибо за вашу помощь.
Я могу предоставить дополнительную информацию, если это необходимо.