자식 컴포넌트에서 사용할 태그 혹은 컴포넌트가
기본 HTML 태그일 때는 buttonContainer='문자열 태그명' 으로 속성 값을 주고
사용자 정의 컴포넌트를 넘겨줄 때는(예를 들어 Menu 라는 컴포넌트가 있다면) buttonContainer={ Menu }
로 자식 컴포넌트에 전달하면 됩니다
부모 컴포넌트1
<Tabs buttonContainer='menu' buttons={buttons}>{tabContent}</Tabs>
자식 컴포넌트2
export default function Tabs({children, buttons, buttonContainer}) {
const ButtonContainer = buttonContainer // 사용자 컴포넌트로 인식되게 첫글자가 대문자인 변수 저장
return (
<>
<ButtonContainer> <menu> 로 랜더링 되게 됨
{buttons}
</ButtonContainer>
{children}
</>
)
}
그리고 이걸 좀 더 축약한다면 부모 컴포넌트에서 속성명을 첫글자 대문자로 주면
const ButtonContainer = buttonContainer 을 생략할 수 있다.
부모 컴포넌트1
<Tabs ButtonContainer='menu' buttons={buttons}>{tabContent}</Tabs>
자식 컴포넌트2
export default function Tabs({children, buttons, ButtonContainer}) {
return (
<>
<ButtonContainer> <menu> 로 랜더링 되게 됨
{buttons}
</ButtonContainer>
{children}
</>
)
}
참고로 vue 의 :is 와 같은 역할이다
'React' 카테고리의 다른 글
[React] styled-components 에서 $ 를 사용하는 이유 (0) | 2024.10.18 |
---|---|
[React] React와 Vue의 CSS 모듈 사용 차이점 (0) | 2024.10.18 |
[React] props children VS vue slot (0) | 2024.09.30 |
[React] Vue 에는 없는 React 만의 표현들 (0) | 2024.09.27 |
[React] 자식 컴포넌트에 Prop 전달하는 방법 (0) | 2024.09.10 |