React를 공부하기 시작하면서 Class component와 Function component를 알아가던 중, 동기 중 한 분이 Class component에서 State를 사용할 때, Constructor method와 Super method를 사용하는 이유에 대해 궁금해하는 블로그 글을 보았다. 클래스 컴포넌트에서 사용되는 Consturctor와 Super, 왜 쓰는걸까?
render()
는 하위 class에서 필수로 정의해야 하는 메소드이다. constructor(props)
와 super(props)
를 사용하는 이유를 알아보자Constructor(), 한글로는 생성자라 불리는 함수는 state(컴포넌트의 상태) 값을 초기화 하거나 메서드를 바인딩 할 때 사용한다
또한 해당 컴포넌트가 마운트 되기 전 호출된다
this
의 이벤트 핸들러를 바인딩 해주는 것이다.super
메서드를 사용하는 이유는 무엇일까?
React.Component
를 상속한 컴포넌트의 생성자를 구현할 때에는 다른 구문에 앞서super(props)
를 호출해야 합니다. 그렇지 않으면this.props
가 생성자 내에서 정의되지 않아 버그로 이어질 수 있습니다.
왜 this.props가 생성자 내에서 정의되지 않는 것일까? 일단 super에 대해서 알아보자
자바스크립트에서 super
는 부모 클래스 생성자를 가리킨다
그리고 중요하게도 super(props) 선언전까지 constructor에서 this
키워드를 사용할 수 없다. 자바스크립트에서는!!
리액트에서는 super가 constructor와 this의 실행순서로 인해 발생하는 문제로 인해 사용하는 것을 권고한다.
✍️만약 리액트에서 super()를 선언하기 전에 this를 사용한게된다면?
더 자세한 내용은 위 블로그에서 확인할 수 있다. 그냥 지나갈 수 있었지만 이번 블로깅을 통해 리액트와 조금 더 친해졌다. YEE!
감사합니다! 퍼가요~♡