Your First Component – React
The library for web and native user interfaces
react.dev
컴포넌트란?
Web에서 HTML은 태그를 통해 더 다양한 구조를 제공해준다
<article> // 독립적인 컨텐츠를 위해 사용
<h1>My First Component</h1> // 제목
<ol> // Ordered List 사용
<li>Components: UI Building Blocks</li> // 리스트 element
<li>Defining a Component</li>
<li>Using a Component</li>
</ol>
</article>
이런 마크업을 통해 CSS 스타일링과 더해져 웹에 있는 모든 내용을 볼 수 있게 된다
리액트는 이런 마크업, CSS, 자바스크립트를 합쳐서 Component를 구사하는데,
이는 재사용 가능한 UI 및 모든 정보를 새로고침 할 필요를 줄일려고 만들어졌다
예를 들어 네비게이션 바를 모든 페이지에서 사용한다고 가정해보자
<PageLayout>
<Page1> // 매 페이지 마다 Navbar을 사용해야됨
<Navbar />
<OtherStuff />
</Page1>
<Page2>
<Navbar /> // Navbar 수정을 하면
<OtherStuff /> // OtherStuff까지 새로고침 할 필요 없음
</Page2>
<Page3>
<Navbar />
<OtherStuff />
</Page3>
</PageLayout>
이런 유용성 때문에 수정하기 편리하고 유저에게 보여지는 랜더링에도 역시 큰 도움이 된다
컴포넌트 구성
export default function Profile() { //Export 및 함수 이름
return (
<img // JSX
src="SomeImgSrc"
alt="SomeAltText"
/>
)
}
1. 메인 함수 정의
React에서 main function은 export default를 통해 정의한다
2. 함수 정의
function Profile() 로 함수의 이름을 만들어야된다
3. 마크업 정의
React는 JS 로직과 HTML을 합친 JSX 구성을 통해 만들어진다
컴포넌트 사용하기
function Profile() {
return (
<img
src="someSrc"
alt="someAlt"
/>
);
}
export default function Gallery() {
return (
<section>
<h1>그냥 대충 아무 제목</h1>
<Profile />
<Profile />
<Profile />
</section>
);
}
- export default를 통해 function Gallery()가 메인 함수인것을 알수가 있다
- Gallery()에서 JSX를 리턴하는데 여기에 <Profile />이 3개가 있는것을 볼 수 있다
- 위에 Profile을 3번 불러와 그대로 넣은것과 똑같다 - 아래와 똑같다
export default function Gallery() {
return (
<section>
<h1>그냥 대충 아무 제목</h1>
<img src="someSrc" alt="someAlt" />
<img src="someSrc" alt="someAlt" />
<img src="someSrc" alt="someAlt" />
</section>
);
}
※ 참고 내용 ※
- <section> 같이 소문자면 HTML 태그라는것을 알수가 있다
- <Profile /> 같이 대문자면 리액트 컴포넌트라는 것을 알수가 있다
반응형
'My Front End Journey > React' 카테고리의 다른 글
[React 공부] 1-5. 컴포넌트에 Props 전달하기 (0) | 2024.04.15 |
---|---|
[React 공부] 1-4. JSX안에 JavaScript 사용하는 방법 (0) | 2024.04.14 |
[React 공부] 1-3. JSX로 마크업 작성하기 (0) | 2024.04.13 |
[React 공부] 1-2. 컴포넌트 가져오기 & 보내기 (0) | 2024.04.13 |
[React 공부] 1. Describing the UI - 리액트의 UI 설명 (0) | 2024.04.11 |