인프런 커뮤니티 질문&답변

김태희님의 프로필 이미지
김태희

작성한 질문수

[리액트 1부] 만들고 비교하며 학습하는 리액트 (React)

[순수JS 2] 탭 1

show( ) 함수를 오버라이드 한 후 다시 부모의 show()를 호출하는 이유가 궁금합니다.

작성

·

165

0

show() {
this.element.innerHTML = this.template.getTabList();
super.show();
}

[질문 1]

show() 함수를 오버라이드하여 탭뷰의 show()에서는 innerHTML에 탭 리스트를 추가하고

show()함수의 역할이 변경되었으니

다시 부모의 show()를 호출해서 디스플레이 하는거라고 이해하면 되나요 ?

 

[질문 2]

.map(this._getTab)
_getTab({ tabType, tabLabel }) {
return `
<li data-tab="${tabType}">${tabLabel}</li>
`;
}

_getTab 함수에 대한 질문인데요.. map안에서 _getTab에

() 가 붙지 않는 이유가 궁금합니다.

() 가 붙으면 함수의 호출이고 없으면 참조인것 같은데 왜 여기서 참조형식으로 써야하는지 잘 이해가 안가요

그리고 _getTab 구현부분에서 에서 인자를 넘겨주지 않았는데 {tabType,tabLabel} 을 어떻게 받아올 수있는지 궁금합니다.

 

 

 

 

 

답변 1

2

1.

슈퍼 클래스의 show 함수를 재정의했기에 외부에서 show 메서드 호출 시 슈퍼 클래스의 show 메서드로 접근해서 호출 하는 게 아닌 서브 클래스의 show 메서드가 호출됩니다.

2.

Array.map(콜백 함수) 호출 시 메서드 내부에서 콜백 함수를 호출하고 파라미터를 주입합니다.

주입되는 파라미터: (현재 처리할 요소, 처리할 현재 요소의 인덱스,  호출한 배열)

그러므로 함수 자체만 넘겨주어도 내부에서 호출하며,

_getTab 메서드 내부에서 주입되는 파라미터를 사용할 수 있습니다.

 

김정환님의 프로필 이미지
김정환
지식공유자

geuni님 답변해 주셔서 고맙습니다.

김태희님의 프로필 이미지
김태희

작성한 질문수

질문하기