2017-12-27 1 views
1

나는이 웹 사이트에 있었다 : https://hackernoon.com/animated-page-transitions-with-react-router-4-reacttransitiongroup-and-animated-1ca17bd97a1aReact Javascript Arrow 및 Class로 래퍼를 만드시겠습니까?

그리고 나는 해결책을 얻었다. 그러나 나는 자바 스크립트 코드를 완전히 이해하지 못했다.

const AnimatedWrapper = WrappedComponent => class AnimatedWrapper 
extends Component { 
constructor(props) { 
    super(props); 

} 
} 
export default AnimatedWrapper; 

그리고 내 Home.js 파일에, 나는이

class default Home extends Component {/* blah blah blah */} 
const Home = new AnimatedWrapper(Home); 
export default Home; 

내 질문은 const AnimatedWrapper = WrapperComponent => class AnimatedWrapper extends Component 일 것입니다 무엇을 수행 할 수 있습니다 특히, 나는 AnimatedWrapper.js 클래스에서이 같은 것을 보았다? 나는 AnimatedWrapper가 props이라는 생성자에 하나의 인수를 기대하고 있다는 것에 놀랐다. props은 내가 전달한 Home 객체가 아닌 것으로 가정한다.

+4

고차원 구성 요소를 사용 중입니다. 많은 부분이 그들에 관해 쓰여졌 기 때문에 빠른 검색을 통해 어떻게 작동하는지 완전히 이해할 수 있습니다. 'new '로 호출하는 것은 아마도 권장하지 않습니다. 여기서 중요한 점은 자바 스크립트의'class'는'function'의 한 종류라는 것입니다. –

+0

좋아요, Higher Order Component 문구는 저에게 Google 검색 및 연구에 유용한 정보를 제공합니다. – John

답변

3

이것은 반응을 설명하기 위해 사용되는 패턴입니다. 이 경우 AnimatedWrapper은 고차원 구성 요소입니다.

상위 구성 요소 (HOC)는 구성 요소 논리를 재사용하기위한 React의 고급 기술입니다. HOC는 React API 그 자체가 아닙니다. 그것들은 React의 구성 적 성격으로부터 나타나는 패턴입니다.

당신은 ... 다른 구성 요소를 렌더링하지만 일을 아무것도 코드 샘플 무엇 귀하의 질문에 대답하지 않으려면

https://reactjs.org/docs/higher-order-components.html

보다 높은 차수의 구성 요소에 대한 자세한 내용을보실 수 있습니다. 이 단계에서 유일한 책임은 있지만, 나중에 여기에서 로직을 공유 할 것을 기대할 수 있으므로 다른 구성 요소에서도 사용할 수 있습니다.

예를 들어, 애니메이션 메뉴 AnimatedWrapper(Menu) 또는 애니메이션 버튼 AnimatedWrapper(Button) - 메뉴 또는 버튼에 대한 애니메이션 로직을 하위 레벨에 저장하는 것이 아니라 이러한 래퍼 또는 HOC가 재사용을 위해 그 책임을 유지하는 데 도움이됩니다.

관련 문제