У меня есть структура ниже для 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, и я бы не хотел реализовывать это ради этого вопроса.
Примечание. Я действительно не понимаю, почему кто-то может дать отрицательный ответ на этот вопрос, не сказав, что с ним не так.





Вы должны использовать компонент 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: добавьте это в импорт import { Link } from 'react-router-dom' и убедитесь, что ListItem имеет component = {Link} и измените свой href на to = "/page-address"
Хорошо, как я могу сделать этот компонент Link ?? Это компонент "a", поэтому он вызывает обновление страницы...
<ListItem button className = {classes.nested} component = "Link" href = "/Monthly" > <ListItemIcon> <DescriptionIcon /> </ListItemIcon> <ListItemText inset className = {classes.child} primary = "Monthly" /> </ListItem>