작성
·
258
0
인트로 클래스에서 createRenderElement()를 정적메소드를 선언한 이유가
Intro컴포넌트에서만 돔을 그리게끔 하고싶어서 그런걸까요?
Intro를 인스턴스화했을때 element를 생성하지 못하도록 한걸까요?
왜 Intro 인스턴스에서는 createRenderElement를 하면 안되는건지가 궁금해서요ㅠㅠ
제가 정적메소드에대해서 잘모르고 질문하는거일수도있습니다ㅠ 답변부탁드리겠습니다! :)
답변 1
1
안녕하세요, simjieun님!
이 부분은 조금 설명하기가 어려운 것이지만, 아주 예리한 질문입니다~!
Intro컴포넌트에서만 돔을 그리게끔 하고싶어서 그런걸까요?
Intro 클래스 안에 존재하는 createRenderElement 는 Intro 컴포넌트만의 부모 컴포넌트를 만들기 위해서 작성한 것입니다.
이것만이 목적이라면 정적 메소드이든, 인스턴스 메소드이든 상관없습니다.
Intro를 인스턴스화했을때 element를 생성하지 못하도록 한걸까요?
못하도록 하려는 목적은 아닙니다. 해당 강의 내에서는 root element 를 생성하기 위한 방법으로 작성하다 보니 그렇게 된 것 뿐입니다.
왜 Intro 인스턴스에서는 createRenderElement를 하면 안되는건지가 궁금해서요ㅠㅠ
만약 createRenderElement 내부에 this 를 사용하는 등과 같이 Intro 클래스 객체를 참조할 일이 있다면 정적 메소드를 사용할 수 없게 되므로 인스턴스 메소드를 사용해야 합니다. 반대로 this 를 사용할 일이 없다면 정적 메소드를 사용하는 편이 좀더 유리합니다. 이런 식으로 작성을 하다보면 일반적으로 인스턴스에 의존하지 않는 경우에는 공통적인 부분이 있을 수도 있는데, 그 부분들을 다시 공통 utils 등으로 빼내는 리팩토링 작업을 할 수 있기도 하구요.
모든 개발이 그렇지만 이 강의에서도 이 코드가 이론적으로 완벽하게 만들어진 코드라고 하기에는 어려운 부분을 말씀드리면서 한편으로는 좀더 좋은 방향이 있지 않았을까?하는 생각도 항상 있습니다. 좋은 질문 감사드립니다~!!
말씀해주신대로라면 의도가 파악이 되서 궁금증이 해결되었습니다. :) 친절한 답변 감사합니다.^^