1. UI 구성 요소
React의 컴포넌트는 주로 다음과 같은 UI 형식로 구성되어 있습니다.
- HTML 요소: <div>, <h1>, <p>등 일반적인 html 요소
- React 요소: 다른 React 컴포넌트를 포함시킬 수 있음
- 스타일 요소: CSS 또는 스타일링 라이브러리를 사용해 UI를 꾸밀 수 있음
2. 컴포넌트 정의하기
컴포넌트를 정의하기위해 함수형 컴포넌트 또는 클래스형 컴포넌트로 정의할 수 있습니다.
함수형 컴포넌트 예시
import "./App.css";
import React from "react";
const ReactComponent = () => {
return <h1>hello React!</h1>;
};
export default ReactComponent;
클래스형 컴포넌트 예시
import React, { Component } from "react";
class ReactComponent extends Component {
render() {
return <div>hello</div>;
}
}
export default ReactComponent;
3.컴포넌트 내보내기
컴포넌트를 다른 파일에 사용할 수 있도록 내보내기 위해서 export를 사용합니다. 위에서 보았듯 export default 뒤에 정의한 함수나 클래스를 내보내 다른 파일에서 사용할 수 있습니다. 사용법은 다음 컴포넌트 불러오기에서 설명하겠습니다.
export default ReactComponent; // 기본 내보내기
또는 이름을 직접 지정해 내보낼 수 있습니다.
export const ReactApp = () => {
return <h1>Hello World</h1>;
};
4. 함수 정의하기
컴포넌트 내 특정 동작을 수행하는 함수를 정의할 수 있습니다. 예를 들어 버튼을 클릭하면 카운트를 증가시키는 함수를 작성할 수 있습니다. 코드는 다음과 같습니다.
import React, { useState } from "react";
const Counter = () => {
const [count, setCount] = useState(0); // 기본 값 0
const increment = () => {
setCount(count + 1); // increment 클릭시 + 1 씩 증가
};
return (
<div>
<h1>현재 카운트: {count}</h1>
<button onClick={increment}>증가</button>
</div>
);
};
export default Counter;
5.마크업 추가하기
컴포넌트의 JSX 내부에 HTML 마크업을 추가해 UI를 구성합니다.
const MyComponent = () => {
return (
<div>
<h1>Hello!</h1>
<p>React Component</p>
<button>Please! Click Here</button>
</div>
);
};
export default MyComponent;
6.컴포넌트 사용하기
다른 컴포넌트에 정의한 컴포넌트를 사용하려면 컴포넌트 이름을 JSX 형식으로 사용합니다.
import MyComponent from "./1.First-Component/Markup";
export const ReactApp = () => {
return (
<div>
<MyComponent />
</div>
);
};
export default ReactApp;
7. 브라우저에 표시되는 내용
- <section>은 소문자로 React는 HTML 태그를 가리킨다고 이해
- <MyComponent />는 대문자 m으로 시작하므로 React는 MyComponent는 컴포넌트를 사용하고자 한다고 이해
<section>
<h1>컴포넌트 위 컴포넌트 작성가능</h1>
<MyComponent />
</section>
8. 컴포넌트 중첩
리액트는 컴포넌트를 다른 컴포넌트 안에 컴포넌트를 포함시킬 수 있습니다 이를 통해 UI 구조화와 재사용성을 높일 수 있습니다.
const Header = () => {
return <h1>Header Component</h1>;
};
const Footer = () => {
return <h1>Footer Component</h1>;
};
const MainContent = () => {
return <p>Main Content</p>;
};
export const ReactApp = () => {
return (
<section>
{/* <h1>컴포넌트 위 컴포넌트 작성가능</h1> */}
{/* <MyComponent /> */}
<Header />
<Footer />
<MainContent />
</section>
);
};
export default ReactApp;
요약
- UI 구성 요소: UI 재사용으로, HTML과 유사한 JSX를 사용해 작성
- 컴포넌트 정의:
- 함수형 컴포넌트: Javscript 함수로 정의
- 클래스형 컴포넌트: ES6 클래스로 정의
- 컴포넌트 내보내기: 다른 파일에서 사용할 수 있도록 export를 사용해 내보냄
- 함수 정의하기: 컴포넌트 내에서 특정 동작을 수행하는 함수 작성 가능
- 마크업 추가하기: JSX 내부에 HTML 마크업을 추가해 UI 구성
- 컴포넌트 사용하기: 다른 컴포넌트에 정의한 컴포넌트를 JSX 태그 형식으로 사용 가능
- 브라우저에 표시되는 내용: ReactDOM을 사용해 애플리케이션을 HTML 요소에 렌더링
GitHub - Koras02/react-bloging: https://thinky.tistory.com/category/Front-End/ReactJS
https://thinky.tistory.com/category/Front-End/ReactJS - Koras02/react-bloging
github.com
LIST
'Front-End > ReactJS' 카테고리의 다른 글
[ReactJS] 6장 폼 (0) | 2025.02.25 |
---|---|
[ReactJS] 5장 리스트와 키 (0) | 2025.02.23 |
[React] 4강 조건부 렌더링 (0) | 2025.02.22 |
[React] 3장 이벤트 처리 (0) | 2025.02.22 |
[ReactJS] 1장. React JS는 무엇인가? (0) | 2025.02.13 |