Функция render
получает свойства маршрута (match
, location
, history
) как один параметр объекта.
Одно исправление - просто использовать те:
<Route
path="/loosePath"
render={(routeProps) => <Component2 someProps={props} {...routeProps} />}
></Route>
Здесь мы деструктурируем routeProps
, переданное как реквизит, в Component2
. Таким образом, вы можете передать как пользовательские свойства, так и свойства маршрута вашему компоненту.
Однако рекомендуется просто передать Component2
в качестве дочернего элемента:
<Route
path="/loosePath"
>
<Component2 someProps={props} />
</Route>
Выполнение этого способа не добавит к нему свойства маршрута, как в методах render
, component
или children function
. Вместо этого вы должны использовать withRouter
для доступа к свойствам маршрута в компоненте класса или доступное hooks
из функциональных компонентов.
Например, если Component2
были функциональным компонентом, вы бы получили следующее местоположение:
const Component2 = (props) => {
let location = useLocation();
...
Или в качестве компонента класса вы просто обернули бы экспортированный компонент в withRouter
:
class Component2 extends Component {
render() {
this.props.location
...
export default withRouter(Component2)