React router не перезагружает старый компонент

У меня есть эта система маршрутов

....
<Route  path = "/:slug_1/:slug_2" name = "component_2" component = {component_2}/>
<Route  path = "/:slug_1" name = "component_1" component = {component_1}/>
....

При загрузке домашней страницы я нажимаю ссылку component_1 по пути .../slug-1 После щелчка по ссылке component_2 по пути .../slug-1/slug-2. Но после этого, когда я нажимаю ссылку component_1 и в URL-адресе создается путь .../slug-2/slug-1, но это должен быть только путь .../slug-1.

Пожалуйста, помоги мне))

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

Ответы 2

Измените порядок и сделайте component_1 точным следующим образом:

....
<Route exact path = "/:slug_1" name = "component_1" component = {component_1}/>
<Route  path = "/:slug_1/:slug_2" name = "component_2" component = {component_2}/>
....

При этом, если пользователь не вводит слизень_2, маршрут перейдет к component_1.

Если присутствует слизень_2, он перейдет к компонент_2

Не работает. В URL-адресе ссылки (../slug-1), но когда я щелкнул ссылку, маршрутизатор автоматически перенаправляет на URL-адрес (... / slug-2 / slug-2)

coding-scripting 23.08.2018 09:33

@ coding-scripting какой путь по ссылке? если путь ссылки похож на <Link to = "/ aslug" />, он должен поймать компонент_1

João Cunha 23.08.2018 10:04

пути ссылок составляют в цикле <Link to = {slug} />, но после клика отображается URL после старого пути

coding-scripting 23.08.2018 10:37

Обратите внимание на использование Switch и точный путь

    import React from 'react';
    import {BrowserRouter, Route, Switch} from 'react-router-dom';

    import App from './App';
    import Component1 from './Component1';
    import Component2 from './Component2';

    const Router = () => (
      <BrowserRouter>
        <Switch>
          <Route exact path = "/" component = {App} />
          <Route exact path = "/slug1" component = {Component1} />
          <Route path = "/slug1/:slug2" component = {Component2} />
        </Switch>
      </BrowserRouter>
    );

    export default Router;

Ваш основной файл отображает компонент Router, который можно использовать для навигации по всему приложению.

import React from 'react';
import { render, } from 'react-dom';
import Router from './components/Router';

render(<Router />, document.getElementById('root'));

Да, но мне нужно, чтобы slug_1 и slug_2 были динамическими

coding-scripting 23.08.2018 09:36

@ coding-scripting, я просто воспроизвел проблему, и она хорошо работает, используя код: <Route path = "/: about" component = {About} /> <Route path = "/: about /: projects" component = {Project } /> <Link to = "/ about"> Обо мне </Link> <Link to = "/ about / projects"> Проекты </Link>

Chiamaka Ikeanyi 23.08.2018 11:06

пути ссылок составляют в цикле <Link to = {slug} /> и не работает система маршрутизатора

coding-scripting 23.08.2018 12:32

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