Предыстория:
Я создаю это простое приложение и хочу, чтобы оно имело красивые URL с react-router v4
.
У меня есть 3 основных компонента: {Home}
, {List}
, {Hotel}
:
{Home}
Компонент - простой компонент, в котором я могу выбрать country
, datefrom
и dateto
и направить себя к {List}
.
Пример текущего пути: http://url.com/
{List}
Компонент - тяжелый компонент с картами, заполненными отелями со ссылками на / hotel / route.
Пример текущего пути: http://url.com/list/country/?datefrom=2019-01-01?dateto=2020-01-01
{Hotel}
Компонент - большая часть приложения, тяжелый компонент с информацией об отеле и списком цен, разбитых по дням.
Пример текущего пути: http://url.com/hotel/country/hotel-name/?datefrom=2019-01-01?dateto=2020-01-01
Проблема: Я пытаюсь заменить /list/
и использовать /hotels/
для компонента {List}
, поэтому у меня будет некоторая иерархия в структуре URL.
Но как только я попытался изменить /list/
-> /hotels/
для маршрута компонента {List}
, все мое приложение разрывается, и меня встречают множество ошибок из компонента {Hotel}
, это происходит, когда я попробуйте направить себя от {Home}
компонента к {List}
.
То, что я пробовал: Я пытался использовать <Switch>
компонент, он делает {Home}
-> {List}
маршрут работы, но когда я пытаюсь направить себя дальше {Hotel}
компонент, он фактически отображается внизу страницы и не заменяет мой {List}
Вот мой файл app.js, который дает мне странное поведение ...
import React from "react";
import { Route, BrowserRouter as Router } from "react-router-dom";
import Home from "./Home";
import List from "./List";
import Hotel from "./Hotel";
import './styles/app.scss';
class App extends React.Component {
render() {
return (
<Router>
<div className="app">
<Route path="/" component={Home} exact />
<Route path="/hotels/:selectedCountry/:datefrom?:dateto?" component={List} />
<Route path="/hotels/:selectedCountry/:selectedHotel:datefrom?:dateto?" component={Hotel} />
</div>
</Router>
);
}
};
export default App;