사용하여 순수 함수 PARAMS를 제공하는 방법은 다음과 같은 코드가 있습니다반응 라우터의 V4를 - "구성 요소"속성
const CatalogContainer =() => (
<Match
pattern="/catalog/:id"
exactly
render={({ params }) => (
<Redirect to={`/catalog/${params.id}/titles`} />
)}
/>
)
그러나 ESLint 인해입니다 =>
에 다음과 같은 경고를 던지고을 (AFAIK) 나쁜 습관은 모든 호출에서 render
함수의 새로운 참조를 만들기 때문에 나는 그것을 원하지 않는다.
const DefaultRedirect = (params) => (
<Redirect to={`/catalog/${params.id}/titles`} />
);
: 화살표 기능을 사용하지 않아야합니다
경고 JSX 소품, 나는 같은 전용 아직 간단한 구성 요소를 사용하여이 문제를 리팩토링하기 위해 노력하고있어/jsx 노 바인드 그래서
반응하지
그러나, 나는 그것을 사용하는 방법을 알아내는 데 어려움을 겪고 있습니다.
첫째, render
속성 대신 component
을 사용해야한다고 생각합니다. 그러나 확실하지는 않지만 지금까지 올바른 문서를 찾지 못했습니다. (편집 : https://react-router.now.sh/Match여기 v4에 대한 문서입니다)
다음을 포함하여 여러 가지를 시도했지만 작동하지 않습니다.
<Match
pattern="/catalog/:id"
exactly
component={DefaultRedirect({ params })}
/>
나는 차라리
const
가 상태 구성 요소에 대한 일을 할 수있는 새로운 "최고"방법이 될 것으로 보인다 사용하기 때문에 사용하지 않을 몇 가지 예 그러나 그들 모두가
React.createClass
를 사용하는을 발견했다.
한 가지 가능한 솔루션은 React.Component를 확장하는 클래스를 사용하는 것입니다. 그러나 그것은 잘못 느낀다. (https://react-router.now.sh/Match)
다음render
방법에 대한 문서에서성분이 순수 함수로서 기록되어야
react/prefer-stateless-function
class DefaultRedirect extends React.Component { render() { const { params } = this.props; return ( <Redirect to={`/catalog/${params.businessMid}/titles`} /> ); } }
(그리고 ESLint은 에러 그것에 대해 보이고있다)
구성 요소를 렌더링하는 대신에 locatio가 호출 될 때 호출 할 함수를 전달할 수 있습니다 n은 일치합니다. 렌더링 함수는 구성 요소로 전달되는 것과 동일한 소품으로 호출됩니다. 이렇게하면 편리하게 인라인 매치 렌더링 및 줄 바꿈이 가능합니다.
그래도 편리 할 수도 있지만 그래도 좋은 실행으로 간주되지는 않습니다.
순수한 함수를 대신 사용하는 방법이 있습니까?