컴포넌트는 다른 컴포넌트를 자신의 내부에 중첩시킬 수 있다.
function Child() {
return <div>Result</div>;
}
function Parent() {
return <Child />
}
function GrandParent() {
return <Parent />
}
function App() {
return <GrandParent />
}
컴포넌트 간의 정보교환 방식
function Child({age}) {
return <div>Parent age : {age} </div>;
}
function Parent() {
const parentAge = 40;
return <Child age={parentAge}/>
}
function App() {
return <Parent />
}
Props를 가져올 때 props를 사용해도 되지만, 일반적으로 정보를 직관적으로 알 수 있도록 {age, name}
같은 형태를 사용한다.
props로 가져온 값이 정보가 없을 때 기본값으로 사용할 값을 지정한 것
function Child({name}) {
return <div>My name is {name}.</div>
}
Child.defaultProps = {
name: "기본 이름"
}
부모 컴포넌트에서 자식 컴포넌트의 x3 자식 컴포넌트에 정보를 전달하려는 경우, 반드시 중간 단계의 자식 컴포넌트를 거쳐야 하는 것
(중간 단계는 해당 정보를 그저 전송하는 중간 매개체의 역할만 수행함)
export default function App() {
return (
<div className="App">
<FirstComponent content="Who needs me?" />
</div>
);
}
function FirstComponent({ content }) {
return (
<div>
<h3>I am the first component</h3>;
<SecondComponent content={content} />|
</div>
);
}
function SecondComponent({ content }) {
return (
<div>
<h3>I am the second component</h3>;
<ThirdComponent content={content} />
</div>
);
}
function ThirdComponent({ content }) {
return (
<div>
<h3>I am the third component</h3>;
<ComponentNeedingProps content={content} />
</div>
);
}
function ComponentNeedingProps({ content }) {
return <h3>{content}</h3>;
}
<컴포넌트>
와 </컴포넌트>
사이에 위치한 값을 전달하는 Props
{children}
또는 {props.children}
을 사용
// children = "This is Children"
function Child({children}) {
return <div>{children}</div>
}
function App() {
return <Child>This is Children</Child>
}
Layout 컴포넌트를 생성할 때 내부에 주로 사용
function App() {
return (
<Layout>
<div>This is Children Part</div>
</Layout>
)
}