React Router (v4)의 저자는 특정 사용자를 달래기 위해 Router HOC로 추가했다고 생각합니다. 그러나 더 나은 접근 방식은 render prop을 사용하고 해당 props를 전달하는 간단한 PropsRoute 구성 요소를 만드는 것입니다. withRouter와 같이 구성 요소를 "연결"하지 않으므로 테스트하기가 더 쉽습니다. 라우터로 묶인 많은 중첩 구성 요소를 사용하면 재미 없을 것입니다. 또 다른 이점은 경로에 원하는 소품을 통해이 패스를 사용할 수도 있다는 것입니다. 다음은 render prop을 사용하는 간단한 예입니다. (웹 사이트 https://reacttraining.com/react-router/web/api/Route/render-func 의 정확한 예 ) (src / components / routes / props-route)
import React from 'react';
import { Route } from 'react-router';
export const PropsRoute = ({ component: Component, ...props }) => (
<Route
{ ...props }
render={ renderProps => (<Component { ...renderProps } { ...props } />) }
/>
);
export default PropsRoute;
사용법 : (라우트 매개 변수 (match.params)를 얻으려면이 구성 요소를 사용할 수 있으며 그 매개 변수는 전달됩니다)
import React from 'react';
import PropsRoute from 'src/components/routes/props-route';
export const someComponent = props => (<PropsRoute component={ Profile } />);
또한이 방법으로 원하는 추가 소품을 전달할 수 있습니다.
<PropsRoute isFetching={ isFetchingProfile } title="User Profile" component={ Profile } />