#javascript #reactjs #react-router-dom
Вопрос:
Вероятно, это будет вопрос новичка, но передает ли компонент маршрутизатора объект истории дочерним компонентам автоматически? чтобы продемонстрировать, что у меня есть это
App.js ;
const App = () => {
return (
<>
<h1>Hello</h1>
<Router history={history}>
<Switch>
<Route path="/" exact component={Home} />
<Route path="/another_route" exact component={AnotherRoute} />
</Switch>
</Router>
</>
);
};
и компоненты » Дом » и «Другой маршрут», использующие функцию «История» для изменения маршрута без явной передачи детям через маршрутизатор.
// Home.js
import React from "react";
const Home = (props) => {
return (
<>
<h3> Hello From home </h3>
<button onClick={() => props.history.push("/another_route")}>
click here to go another route
</button>
</>
);
};
export default Home;
// AnotherRoute.js
import React from "react";
const AnotherRoute = (props) => {
return (
<>
<h3> Hello From this another Route </h3>
<button onClick={() => props.history.push("/")}>
click here to go back
</button>
</>
);
};
export default AnotherRoute;
Все работает просто отлично, но я хотел бы это понять. Я не видел этого в документации явно.
вот кодовое поле, которое я создал для вас, чтобы вы могли поэкспериментировать:
https://codesandbox.io/s/react-router-dom-passes-history-object-to-children-automatically-jj7ih
Спасибо.
Комментарии:
1. он действительно делится историей со своими детьми
2. не могли бы вы поделиться страницей документации или чем-то еще, чтобы я мог это проверить?
3. Я прочитал эту статью, и в ней говорится об обертывании компонента с помощью компонента withRouter. если бы вы прочитали мой вопрос и проверили codesandbox, я не завернул ни один компонент (или не использовал крючок истории использования), и он работает просто отлично!
Ответ №1:
Да, все методы визуализации маршрута будут переданы одним и тем же трем реквизитам маршрута, match
, location
, history
. Таким образом, вы можете использовать эти реквизиты во всех компонентах, которые вы визуализируете с помощью react-router-dom
Каковы методы визуализации маршрута?
Рекомендуемый метод визуализации чего-либо с помощью a <Route>
-это использование дочерних элементов. Однако есть несколько других методов, которые вы можете использовать для визуализации чего <Route>
-либо подобного
<Route component>
<Route render>
<Route children> function
Каков ваш метод визуализации маршрута в вашем примере?
Вы использовали <Route component>
в качестве <Route path="/" exact component={Home} />