#html #reactjs #react-hooks #react-router #react-props
Вопрос:
Поэтому я должен отреагировать.Страница JS и эта страница состоят из двух частей. Панель навигации и содержимое страницы.
В App.js Я передаю реквизиты на страницу, и я хочу отобразить эти реквизиты на панели навигации в качестве заголовка страницы. Как я могу это сделать ?, в основном у каждой ссылки есть свой реквизит, который является названием страницы, и я хотел бы отобразить этот реквизит в компоненте PageHeader.
import {BrowserRouter as Router, Route, Switch } from "react-router-dom";
import Banany from "./Banany";
import Broskve from "./Broskve";
import PageHeader from "./Components/PageHeader";
import Home from "./Home";
import Hrusky from "./Hrusky";
function App() {
return (
<Router>
<PageHeader/>
<Switch>
<Route exact path="/">
<Home pageTitle="Home"/>
</Route>
<Route path="/banany">
<Banany pageTitle="Bananas"/> <--- I want to display Bananas in PageHeader component
</Route>
<Route path="/broskve">
<Broskve pageTitle="Broskve"/>
</Route>
<Route path="/hrusky">
<Hrusky pageTitle="Pears"/>
</Route>
</Switch>
</Router>
);
}
export default App;
Ответ №1:
Если заголовок страницы зависит от вашего маршрута, просто переместите его внутри вашего маршрута, например:
<Route path="/banany">
<PageHeader pageTitle="Bananas" />
<Banany pageTitle="Bananas" />
</Route>
Очевидно, что есть и другие способы добиться такого поведения, и оно может быть повторяющимся, но это прямой подход.
Комментарии:
1. Это на самом деле хорошая идея, спасибо, я воспользуюсь вашим решением.
Ответ №2:
Существуют всевозможные методы для этого.
2 наиболее релевантных, которые приходят на ум:
- Дайте каждому маршруту параметр, т. Е.
pageTitle
точно так же , как вы переходите к каждому компьютеру.
Затем вы можете получить доступ к нему с панели навигации. - Управляйте глобальным состоянием либо с помощью специализированной библиотеки (redux/и т. Д.), Либо просто с помощью встроенного в React contextAPI.
В этом случае я бы выбрал первый метод, так как он проще, если это все, что вам нужно.