Это не проблема функциональных и функциональных компонентов, а вопрос о том, как работают маршруты. Обернутые дети не получают параметры маршрута, но все, что отображается с использованием Route
's component
, render
или children
prop do.
Методы рендеринга маршрута
<Switch>
<Route path="/first-page" component={FirstPage} />
<Route path="/second-page" component={SecondPage} />
</Switch>
Другой вариант - экспортировать оформленный компонент страницы, используя withRouter
HO C или, если это функциональный компонент, используйте крючки.
withRouter
Вы можете получить доступ к свойствам history
объекта и ближайшим <Route>
'match
через withRouter
компонент высшего порядка. withRouter
будет передавать обновленные match
, location
и history
реквизиты обернутому компоненту всякий раз, когда он рендерится.
const FirstPage = props => {
React.useEffect(() => {
console.log(props)
}, []);
return (
<div>
<h1>First Page</h1>
<p>Welcome to first page, {props.location.state.name}</p>
</div>
);
};
export default withRouter(FirstPage);
hooks
React Router поставляется с несколькими hooks
, которые позволяют вам получить доступ к состоянию маршрутизатора и выполнять навигацию изнутри ваших компонентов.
const FirstPage = props => {
const location = useLocation();
console.log(location);
return (
<div>
<h1>First Page</h1>
<p>Welcome to first page, {location.state.name}</p>
</div>
);
};
export default FirstPage;