App 컴포넌트에서 TestComponent 라는 컴포넌트를 사용할 때, TestComponent에 name이라는 어트리뷰트와 하나의 div 엘리먼트를 넘겨줍니다.
// App.js
import React from 'react';
import TestComponent from './components/TestComponent';
const App = () => {
return (
<>
<TestComponent name="Sangsu">
<div>Hello</div>
<div>World</div>
</TestComponent>
</>
);
};
export default App;
TestComponent에서는 App 컴포넌트가 넘겨준 props를 렌더링해보겠습니다. props를 렌더링할 때는 JSX 내부에서 {} 기호로 감싸주면 됩니다.
// components/TestComponent.js
import React from 'react';
const TestComponent = props => {
return (
<>
{props.name}
{props.children}
</>
);
};
export default TestComponent;
TestComponent 컴포넌트에 다음과 같은 줄을 추가하여 props를 콘솔로 출력해봅니다.
console.log(props);
결과는 다음과 같습니다.
부모 컴포넌트에서 넘겨준 JSX 어트리뷰트와 자식 엘리먼트가 담기고, 자식 엘리먼트의 경우 children이라는 이름의 Array로 담기는 것을 확인할 수 있었습니다.
props를 컴포넌트의 인자로 받아올 때 ES6의 문법인 구조분해 할당(Destructuring assignment) 으로도 받아올 수 있습니다. 이렇게 하면 props를 생략하고 렌더링을 할 수 있습니다.
// components/TestComponent.js
import React from 'react';
const TestComponent = ({name, children}) => {
return (
<>
{name}
{children}
</>
);
};
export default TestComponent;
defaultProps
// components/TestComponent.js
import React from 'react';
const TestComponent = ({name}) => {
return (
<>
{name}
</>
);
};
TestComponent.defaultProps = {
name: '기본 이름
};
export default TestComponent;
propTypes
// components/TestComponent.js
import React from 'react';
import PropTypes from 'prop-types';
const TestComponent = ({name}) => {
return (
<>
{name}
</>
);
};
TestComponent.propTypes = {
name: PropTypes.string.isRequired
};
export default TestComponent;
이 게시물은 초보자로서 개인 공부를 위하여 작성되었습니다!