Я думаю, что для навигации вы используете что-то вроде этого,
<Link to="/#/users" />
<Link to="/#/users/123" />
В соответствии с документами ,
A <Router>
, который использует хэшчасть URL (т. е. window.location.hash), чтобы синхронизировать пользовательский интерфейс с URL.
При использовании HashRouter
вам не нужно вводить #
вручную. Реагировать на маршрутизатор автоматическидобавляет #
в URL
Итак, ваши маршруты должны быть,
import { HashRouter } from 'react-router-dom'
<HashRouter>
<Switch>
<Route exact path='/users' component={UsersComponent} />
<Route exact path='/users/:id' component={UsersDashComponent} />
</Switch>
</HashRouter>
И ссылки должны быть,
<Link to="/users" />
<Link to="/users/123" />
Теперь перейдем к вашему вопросу, какзаменить HashRouter
на BrowserRouter
?
Для этого вам просто нужно сделать это,
import { BrowserRouter } from 'react-router-dom'
<BrowserRouter>
<Switch>
<Redirect from='/#/users' to '/users' />
<Redirect from='/#users/:id' to='/users/:id' />
<Route exact path='/users' component={UsersComponent} />
<Route exact path='/users/:id' component={UsersDashComponent} />
</Switch>
</BrowserRouter>
И ваши ссылки должны быть такими же.
Примечание: Также посмотрите, что я добавил exact
к route
, оно будет точно соответствовать path
.