Маршрутизатор Dynamic React с вкладками

У меня есть страница с таблицей, где вы нажимаете на <tr>, и пользователь перенаправляется на другую страницу, например:

// parent component
<tr onClick = {() => this.props.history.push(`users/${id}`)}>

На новой странице под названием пользователи есть две вкладки, которые также перенаправляют на другие страницы:

// users page receives the id from the parent 
// component with this.props.history.push()
<Tab label='Users' key='users'>
    <div>users page content</div>
</Tab>

// This page must also receive the id from parent component. 
// The structure is similar to users page.
<Tab label='Info' key='info'>
    <Redirect to = {'/info/:id'} />
</Tab>

Итак, мне нужно передать идентификатор с родительской страницы на [информационная страница/вкладка 2] и перенаправить с [информационной страницы/вкладки 2] на [пользователи/вкладка 1] по желанию с идентификатором от родителя, что-то вроде этого:

[tab 1]: users/12345
[tab 2]: info/12345

Как я могу достичь этого результата? Спасибо! :)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
532
1

Ответы 1

Если вы определяете свои маршруты как

/users/:userId
/info/:userId

Вы можете прочитать идентификатор пользователя из параметров и использовать его для навигации между страницами.

<Tab label='Info' key='info'>
    <Redirect to = {`/info/${this.match.params.userId}`} />
</Tab>

Я пробовал что-то подобное, но URL-адрес выглядит примерно так, почему: info/:id12345. И затем, когда я перехожу от [info tab] к [users tab], URL-адрес выглядит так users/:id:id12345

RCohen 22.02.2019 19:08

Вы можете написать <Redirect to = {'/info/:id'} /> там, где вам нужно написать <Redirect to = {`/info/${this.match.params.id}`} />

Shubham Khatri 22.02.2019 19:15

Сейчас это так: <Redirect to = {${routes.INFO}${this.props.match.params.id}} />, где route.INFO — это /info/:id

RCohen 22.02.2019 19:24

Если я уберу :id из /info/, URL-адрес будет выглядеть /info/12345, но я не увижу содержимое информационной страницы.

RCohen 22.02.2019 19:28
export const USERS = '/users/:id' export const INFO = '/info/' export const PARENT = '/parent'
RCohen 22.02.2019 19:39

Я имел в виду, как вы настроили свою конфигурацию маршрута

Shubham Khatri 22.02.2019 19:39
<ProtectedRoute component = {ParentPage} exact path = {routes.PARENT} /> <ProtectedRoute component = {UserPage} exact path = {routes.USERS} /> <ProtectedRoute component = {InfoPage} exact path = {routes.INFO} />
RCohen 22.02.2019 19:43

Изменение INFO на export const INFO = '/info/:id' будет рабочим провайдером, если вы не используете route.INFO в перенаправлении. Вместо редиректа напишите <Redirect to=`/info/${this.props.match.params.id}`} />

Shubham Khatri 22.02.2019 19:46

Как я уже говорил, я уже пробовал ваше решение, и появилась эта ссылка: info/:id12345. И вы правы, должно работать, но что-то не так :(

RCohen 22.02.2019 19:48

Давайте продолжить обсуждение в чате.

Shubham Khatri 22.02.2019 19:49

Другие вопросы по теме

Похожие вопросы

Отправка состояния родительскому компоненту замораживает текущий компонент
«Ошибка: невозможно создать стилизованный компонент для компонента: undefined», когда я использую новый ServerStyleSheet
Пользовательский интерфейс React Material: почему основной цвет отличается от цвета в документации?
Является ли это хорошей практикой для обновления состояния компонента React из функции внутри другой функции?
Как создать SPA в React для включения через SSI
Как я могу фильтровать данные с помощью Redux, но сохраняя старое состояние?
Проверка правильности выравнивания элементов Select React-Bootstrap
React Context API — потребитель не выполняет повторную визуализацию после изменения контекста
«В типе отсутствуют следующие свойства, контекст, setState» при наличии компонента React в качестве аргумента
Реакция семантического пользовательского интерфейса — реализовать всплывающее окно при выборе раскрывающегося списка