Я новичок в реагирующем маршрутизаторе (и маршрутизации на стороне клиента в целом), так что я могу думать об этом все неправильно.Извините заранее, если это так ...
В основном просто хотите реализовать 3 простых правила:
- если нет пользователя, перенаправьте на '/ login'
- иначе, если маршрут не существует, перенаправить на '/' (root)
- иначе разрешить пользователю перейти на запрошенный маршрут
Я отслеживаю пользователя в this.state.user
.Мой текущий маршрутизатор, похоже, следует первым двум правилам, но позволяет только аутентифицированному пользователю видеть домашнюю страницу («/ profile» перенаправляет на «/»), поэтому я знаю, что я делаю что-то не так, но не могу понять, что.
<Router>
{this.state.user ? (
<Switch>
<Route path="/" exact component={Home}/>
<Route path="/profile" exact component={Profile}/>
<Route render={() => (<Redirect to="/" />)}/>
</Switch>
) : (
<Switch>
<Route path="/login" exact component={Login}/>
<Route render={() => (<Redirect to="/login" />)}/>
</Switch>
)}
</Router>
Любой совет приветствуется.Спасибо