Я понимаю, что вы пытаетесь сделать, но это не то, как вы это делаете, реагирующий маршрутизатор фактически делает это для вас, в некотором смысле, позвольте мне объяснить:
React-router на самом деле имеет свои реквизитыи вы можете connect
к маршрутизатору, чтобы получить эти реквизиты
Небольшой пример:
Во-первых, измените вашу маршрутизацию на:
<Switch>
<Route exact path="/" component={SessionViewer} />
<Route path="/:sessionID/:tsFrom/:tsTo" component={SessionViewer} />
</Switch>
это будет увереноба маршрута будут отображать SessionViewer, затем:
создайте метод componentDidMount () в SessionViewer
React-Router-Dom предоставит вам различныепо умолчанию, если вы используете метод withRouter
в своем компоненте -> Добавить export default withRouter(SessionViewer)
в свой класс SessionViewer
- Поскольку у вас теперь есть подключенный класс (к маршрутизации), вы можете получить доступ к
match
внутри вашего реквизита этот реквизит создается react-router
и содержит информацию о том, что соответствует этому маршруту: Например, match.params.sessionId
будет содержать: sessionId из маршрута, то есть, если у меня есть /10/from/to
match.params = {
sessionId: 10,
tsFrom: from,
tsTo: to
}
Теперь внутри вашего метода componentDidMount вы можете
setState
все
match.params
, которые вам нужны для условного рендеринга для примера.
Надеюсь, это поможет, я могу пойти глубже, если вам нужно, но я лучшебудь проще