- Во-первых, избавьтесь от
Router
или BrowserRouter
, потому что Router
обычно просто псевдоним для BrowserRouter
. Ниже приведен импорт, который вы можете увидеть:
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
И тогда ваш App.jsx будет выглядеть так:
<Router>
<Route exact path={'/my-dashboard/first-page'} component={FirstComponent}/>
</Router>
Во-вторых, это серьезно неправильно:
const FirstComponent = props => {
const {
location: {
state: { userDetails }
}
} = props;
console.log('user-detail', userDetails); // <- Seriously wrong!
return <div>FirstComponent</div>;
}
Хотя FirstComponent
- это функция, это не обычная javascript функция, а Реагирующий функциональный компонент ! Вам нужен метод жизненного круга (componentDidMount), чтобы увидеть userDetails
реквизит.
Предполагая, что вы знаете хуки, ваш FirstComponent
будет выглядеть так:
import { useEffect } from "react"
const FirstComponent = props => {
const {
location: {
state: { userDetails }
}
} = props;
useEffect(() => {
console.log({ userDetails }); // <- Better console.log with Object
}, []) // <- empty dependency = componentDidMount
return <div>FirstComponent</div>;
}
Кроме того, вам нужно обернуть
FirstComponent
withRouter
HO C, который предоставляется response-router, чтобы получить реквизит
location
в ваших реквизитах
FirstComponent
.