React-router соответствует первому маршруту, поэтому вам нужно отсортировать компоненты маршрутов по самым сложным сверху, например:
- / очень / сложный / маршрут
- / очень / сложный
- / очень
Проблема, с которой вы столкнулись в своем коде, заключается в том, что вы не передаете реквизиты компонента ...rest
компоненту. Это должно быть что-то вроде этого:
const PrivateRoute = ({ children, ...rest }) => {
return (
<Route
{...rest}
render={props =>
auth.isAuthenticated ? (
children
) : (
<Redirect
to={{
pathname: '/login',
state: { from: props.location },
}}
/>
)
}
/>
)
Обратите внимание, что ...rest
содержит "точную" опору, которая определена в вашем, так что вам не нужно определять ее дважды - один раз в PrivateRoute и однажды в Трассе. Так что, когда вы указываете это в 1, а не в 2,3, это не имеет значения, но противоположное имеет значение, потому что «точный» - опора Надежды, это помогает!