#reactjs #react-router-dom
Вопрос:
У меня есть следующее:
export default function App() {
return (
<div>
<BrowserRouter>
<Switch>
<Route exact path="/">
<HashRouter>
<Switch>
<Route exact path="/" component={ServiceHomepage}/>
<Rout path="/foo" component={FooPage}/>
</Switch>
</HashRouter>
</Route>
<Route exact path="/token_exchange" component={TokenExchange}/>
</Switch>
</BrowserRouter>
</div>
);
}
И я ожидал бы, что, если я нажму /
, я получу домашнюю страницу, если я нажму /#/foo
, я получу страницу, но по некоторым причинам /token_exchange
, похоже, не работает. Что я делаю не так?
Это ошибка, которую я получаю:
Cannot GET /token_exchange
Комментарии:
1. «/foo» — это не то же самое, что «/#foo», первое-это, в то
FooPage
время как второе было бы ссылкой наServiceHomepage
. Проверьте ссылку react-router-hash . Если вы хотите нажать на тег привязки на странице foo, ссылка будет выглядеть как «/foo#foo».2. Приносим извинения, пропустил
/
3. Не включайте «/#» в свои ссылки в приложении. Если вы хотите перейти по ссылке
FooPage
, путь будет «/foo». Кроме того, почему вы смешиваете и визуализируете более 1 маршрутизатора?4. проблема, с которой я сталкиваюсь, — это конечная точка token_exchange, эта конечная точка, похоже, недоступна @DrewReese
5. Это должно сработать, я не понимаю, почему бы и нет, кроме того, что, возможно, путь не совсем
"/token_exchange"
правильный . Во всяком случае, маршрут «/foo» должен быть недоступен, такexact path="/"
как отображение на маршруте исключает его совпадение.
Ответ №1:
Оказывается, мне нужно было добавить historyApiFallback: true
в свой конфигурационный файл webpack.