React Route без обновления страницы

У меня есть структура ниже для React

App.js 
-> 
    Skeleton.js 
    ->
        1) Sidebar.js
        2) Content.js
        -> 
            1) Page1.js
            2) Page2.js
            3) Page3.js

Маршрутизация выполняется внутри App.js следующим образом:

<BrowserRouter>
      <Fragment>
      <Route exact path = "/" component = {Skeleton} />  
      <Route path = "/:type" component = {Skeleton} />
    </Fragment>
  </BrowserRouter>

И у меня есть такие элементы боковой панели

<ListItem
  button
  className = {classes.nested}
  component = "a" href = "/Equity-Runs"
>
  <ListItemIcon>
    <DescriptionIcon />
  </ListItemIcon>
  <ListItemText
    className = {classes.child}
    inset
    primary = "Page1"
  />
</ListItem>

Все работает так, как ожидалось, например, если вы нажмете «Страница 1» на боковой панели, она загрузит «Страницу 1», если вы нажмете «Страница 2», загрузится страница 2 и т. д.

Теперь каждый раз, когда вы нажимаете на ссылку внутри боковой панели, страница становится пустой, а затем загружается. Я хотел бы сделать так, чтобы при нажатии на страницы перезагружался только Content.js, поэтому остальная часть страницы не становится пустой и не загружается. Каждый раз, когда вы нажимаете на страницу с боковой панели, меняется только область содержимого.

Я предполагаю, что мне придется переместить логику маршрутизации в файл содержимого, но тогда проблема в том, что мне нужно знать, на какой странице находится пользователь в файлах боковой панели и AppBarPanel. На данный момент у меня не настроен Redux, и я бы не хотел реализовывать это ради этого вопроса.

Примечание. Я действительно не понимаю, почему кто-то может дать отрицательный ответ на этот вопрос, не сказав, что с ним не так.

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

Ответы 1

Ответ принят как подходящий

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

https://reacttraining.com/react-router/web/api/Link/to-string

<Link
  to = {{
    pathname: "/courses",
    search: "?sort=name",
    hash: "#the-hash",
    state: { fromDashboard: true }
  }}
/>

Хорошо, как я могу сделать этот компонент Link ?? Это компонент "a", поэтому он вызывает обновление страницы... <ListItem button className = {classes.nested} component = "Link" href = "/Monthly" > <ListItemIcon> <DescriptionIcon /> </ListItemIcon> <ListItemText inset className = {classes.child} primary = "Monthly" /> </ListItem>

Extelliqent 11.03.2019 21:54

Ответ на мои вопросы о компоненте Link: добавьте это в импорт import { Link } from 'react-router-dom' и убедитесь, что ListItem имеет component = {Link} и измените свой href на to = "/page-address"

Extelliqent 11.03.2019 21:56

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