학습내용
- 컴포넌트가 무엇인지
- React 어플리케이션에서 컴포넌트의 역할
- 첫번째 React 컴포넌트를 작성하는 방법
◼ 컴포넌트: UI 구성요소
- HTML은 웹에서 풍부한 구조의 문서를 만드는 데 사용되는 마크업 언어입니다.
- React는 사용자가 마크업, CSS, JavaScript를 결합하여 재사용 가능한 UI 요소인 컴포넌트를 만들 수 있게 해줍니다.
- React 컴포넌트는 HTML 태그와 마찬가지로 조합, 정렬 및 중첩하여 전체 페이지를 디자인할 수 있습니다.
- 프로젝트가 성장함에 따라 컴포넌트를 재사용하여 개발 속도를 높일 수 있으며, React 커뮤니티에서는 수천 개의 컴포넌트를 공유하고 있습니다.
◼ 컴포넌트 정의하기
예전에는 웹 페이지를 만들 때 주로 콘텐츠를 꾸며주고, 그 다음에 상호작용을 추가할 때 자바스크립트를 사용했어요. 그런데 지금은 많은 웹사이트와 앱이 사용자와 상호작용할 수 있어야만 해요. React는 이런 변화를 받아들여서 상호작용을 먼저 고려하는데, 이때도 여전히 같은 기술을 사용해요. React 컴포넌트는 자바스크립트 함수로서, 여기에 우리가 흔히 볼 수 있는 마크업을 섞어서 사용할 수 있어요.
컴포넌트를 만드는 방법은 이렇게 세 가지에요
1. 컴포넌트를 다른 곳에서도 사용할 수 있게 내보낼수 있습니다.
2. 함수를 정의하기. 함수 이름은 대문자로 시작해야 해요. (규칙)
[+ 하지만 ]
파일명을 소문자로, 함수명을 소문자로해도 import에서 대문자로 선언을 하면 사용이 가능하다.
(ex) 파일명 account.js , 함수명 function account () {}, import Account from './account')
3. 마크업을 추가하기. 자바스크립트 안에 마크업을 넣을 수 있어요.
그러나 마크업이 모두 return 키워드와 같은 라인에 있지 않은 경우에는 다음과 같이 괄호로 묶어야 합니다:
// return 안에 같은 라인에 없으면 소괄호로 감싸야한다.
return (
<div>
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</div>
);
[+주의]
return과 같은 라인에 없고, 괄호가 없으면 return의 뒷 라인에 있는 모든 코드는 무시된다.
// 아무것도 없는 return을 생각하면된다 return ; <div> <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" /> </div> ;
이런 식으로 React를 사용하면 사용자와 상호작용하는 웹사이트나 앱을 만들 수 있어요.
◼ 컴포넌트 사용하기
컴포넌트는 중첩이 가능하다
export default function Gallery() {
return (
<section>
<h1>Amazing scientists</h1>
<Profile /> // 만든 컴포넌트를 여러번 사용
<Profile /> // 만든 컴포넌트를 여러번 사용
<Profile /> // 만든 컴포넌트를 여러번 사용
</section>
);
}
[+주의]
함수안에 함수를 가급적 넣지 않는것이 좋다.
// 스니펫은 매우 느리고 버그를 촉발할수 있다 export default function Gallery() { // 🔴 절대 컴포넌트 안에 다른 컴포넌트를 정의하면 안 됩니다! function Profile() { // ... } // ... }
export default function Gallery() { // ... } // ✅ 최상위 레벨에서 컴포넌트를 선언합니다 function Profile() { // ... }
◼ 브라우저에 표시되는 내용
// [JSX 코드]
export default function Gallery() {
return (
<section>
<h1>Amazing scientists</h1>
// Profile 컴포넌트에는 더 많은 <img /> 태그가 있습니다.
<Profile />
<Profile />
<Profile />
</section>
);
}
// [브라우저에 보이는 코드]
// <section>은 소문자로 작성되어 있어 React가 이것을 HTML 태그로 인식
<section>
<h1>Amazing scientists</h1>
//<Profile />은 대문자 'P'로 시작하여 React가 컴포넌트로 인식해줍니다.
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>
◼ 컴포넌트의 모든 것
React 애플리케이션은 보통 root 컴포넌트에서 시작됩니다. 이 컴포넌트는 앱의 시작점이며, 모든 다른 컴포넌트들은 여기에서 시작됩니다.
대부분의 React 앱은 모든 부분에서 컴포넌트를 사용합니다. 작은 부분부터 전체 페이지까지 모든 것을 컴포넌트로 만들 수 있습니다.
일부 React 기반 프레임워크는 HTML 대신에 React 컴포넌트를 사용하여 HTML을 생성합니다.
많은 웹사이트들은 React를 주로 상호작용을 추가하는 용도로만 사용합니다. 이러한 경우에는 여러 개의 root 컴포넌트가 있을 수 있습니다.
요약하면, React는 유연하고 재사용 가능한 UI를 만드는 데 사용되며, 이를 통해 웹 애플리케이션의 개발 및 유지 보수를 용이하게 만듭니다.
◼ 요약
- React를 사용하면 앱의 재사용 가능한 UI 요소인 컴포넌트를 만들 수 있습니다.
- React 앱에서 모든 UI는 컴포넌트입니다.
- React 컴포넌트는 다음 몇 가지를 제외하고는 일반적인 JavaScript 함수입니다.
- 컴포넌트의 이름은 항상 대문자로 시작합니다.
- JSX 마크업을 반환합니다.
[참고]
https://ko.react.dev/learn/your-first-component
https://www.youtube.com/watch?v=qjqUlgZ-80M&list=PLjQV3hketAJkh6BEl0n4PDS_2fBd0cS9v&index=7
'[노트장] 적으며 정리해 보는 이론 > 리액트문서' 카테고리의 다른 글
[리액트문서보기][상호작용성 더하기] 이벤트에 응답하기 (0) | 2024.03.25 |
---|---|
[리액트문서보기][UI 표현하기]컴포넌트 순수하게 유지하기 (0) | 2024.03.25 |
[리액트문서보기][UI 표현하기]중괄호 있는 JSX 안에서 자바스크립트 사용하기 (0) | 2024.03.19 |
[리액트문서보기] React로 사고하기(구조 나누기, state위치 선정 등) (0) | 2024.03.18 |
[리액트문서보기] Quick Start (0) | 2024.03.17 |