[React] 컴포넌트 생성하기

현채은·2024년 4월 17일
0
post-thumbnail

컴포넌트 만들기

React 앱은 컴포넌트로 구성됩니다. 컴포넌트란 웹 페이지의 한 부분을 나타내는 코드 블럭이며 재사용이 가능한 UI 요소입니다.

마치 레고 블록과 같아서, 여러분이 원하는 대로 조합하여 멋진 구조물을 만들 수 있습니다. React 컴포넌트도 각자의 역할과 모양이 있으며, 이를 조합함으로써 복잡한 사용자 인터페이스를 쉽고 효율적으로 구성할 수 있습니다.

다음 총 4단계에 걸쳐, 컴포넌트를 중첩해 볼까요?

1단계 : 컴포넌트 정의하기

사용하고 싶은 컴포넌트를 원하는 마크업을 추가하여 작성합니다. (React 컴포넌트의 이름은 항상 대문자로 시작해야 합니다.)

export default function Introduce() {
	return (
	<>
		<p> 제 이름은 레오입니다. </p>
		<p> 만나서 반갑습니다! </p>
	</>
	);
}

2단계 : 컴포넌트 내보내기

export default 접두사를 사용하면 다른 파일에서 해당 컴포넌트를 가져올 수 있도록 해줍니다. 해당 컴포넌트를 내보낼 준비가 된 것이라고 말할 수 있습니다.

  • 첫번째 방법
export default function Introduce() { 
	return (
		// JSX 코드
	);
}
  • 두번째 방법
function Introduce() {
	return (
		//  JSX 코드
	);
}

export default Introduce;

3단계 : 컴포넌트 불러오기

import문을 사용하여 MyApp 컴포넌트에 Introduce 컴포넌트를 가져와 보겠습니다.

import Introduce from './Introduce';

export default function MyApp() {
	return (
		// JSX 코드
	);
}

4단계 : 컴포넌트 중첩하기

선언한 Introduce 컴포넌트를 MyApp 컴포넌트 안에 중첩해 보겠습니다.

import Introduce from './Introduce';

export default function MyApp() {
	return (
		<div>
			<h1> 여러분~! 환영합니다 </h1>
			<Introduce /> {/* Introduce 컴포넌트 중첩 */}
		</div>
	);
}

외부 소스로부터 컴포넌트를 사용하기 위해서는, import 구문을 통해 해당 컴포넌트를 프로젝트로 가져와야 합니다.

  • 컴포넌트와 HTML 태그를 어떻게 구분하나요 ? 앞서 말씀드린 대로 HTML 태그소문자이고, 컴포넌트대문자로 시작하기 때문에 대소문자로 구분할 수 있습니다.

컴포넌트의 중첩 및 구성

컴포넌트는 일반 JavaScript 함수이므로 같은 파일에 여러 컴포넌트를 포함할 수 있습니다. 상단의 예제 코드를 보면 Introduce 컴포넌트가 한 번 중첩되어 있지만, 여러 번 반복하여 중첩할 수 있습니다.

import Introduce from './Introduce';

export default function MyApp() {
	return (
		<div>
			<h1> 여러분~! 환영합니다 </h1>
			<Introduce /> {/* Introduce 컴포넌트 중첩 */}
			<Introduce /> {/* Introduce 컴포넌트 중첩 */}
			<Introduce /> {/* Introduce 컴포넌트 중첩 */}
		</div>
	);
}

Introduce 컴포넌트는 MyApp 컴포넌트 안에서 렌더링되기 때문에 MyApp은 각 Introduce자식으로 하는 부모 컴포넌트라고 말할 수 있습니다.

컴포넌트를 한 번 정의한 후에 원하는 곳에서 원하는만큼 자유롭게 사용할 수 있다는 점이 React의 가장 큰 장점입니다!

🧐결국 중첩해야 한다면 처음부터 한 파일에서 부모 컴포넌트 내부에 자식 컴포넌트를 정의하면 되는 것 아닌가요 ?

네, 물론 가능하지만 추천되는 방식은 아닙니다.

한 파일 내에 두 개의 컴포넌트를 정의하는 경우 가독성이 떨어지며, 자연스레 유지보수성재사용성이 떨어지게 됩니다. 그렇기 때문에 컴포넌트는 각각 다른 파일에 생성하는 방법을 권장합니다.

참고 자료

profile
개발 기록 공간

0개의 댓글