티스토리 뷰
728x90
Component Functions
- 컴포넌트명은 대문자로 시작해야한다
- 렌더가능한 값을 리턴해야한다
// 예시 1 - 리액트 컴폰넌트 예시
import React, { useState } from 'react';
function Counter() { // 컴포넌트 함수는 대문자로 시작
const [count, setCount] = useState(0);
return (
// 화면에 렌더링 가능한 요소를 반환
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
Increment
</button>
</div>
);
}
export default Counter;
컴포넌트 렌더링부분 return 할때 하나의 요소만 리턴해야하는 이유
JSX 요소를 리턴할 때 여러 요소를 병렬로 써서 리턴하면 에러가 발생한다.
// 예시 2
// ...
return (
// 에러
<div>hello</div>
<p>hi</p>
)
아래처럼 상위 태그로 감싸서 하나의 요소로 만들어서 리턴하면 에러가 발생하지 않는다.
// 예시 2-1
// ...
return (
<div id="content">
<div>hello</div>
<p>hi</p>
</div>
)
왜 상위 태그로 감싸서 하나의 요소로 리턴해야할까? 그 이유는 함수는 한번에 하나의 값만 리턴할 수 있기 때문이다. 위의 예시2 코드를 리액트가 제공하는 createElement API를 사용해서 작성하면 아래와 같다.
// 예시 3
// ...
return (
// 에러
React.createElement('div', null, 'hello');
React.createElement('p', null, 'hi');
)
즉, 두개의 값을 리턴하고 있다. 함수는 하나의 값만 리턴할 수 있으므로 에러가 발생한다. 상위에 태그를 하나 더 씌우면 하나의 값만 리턴하게 된다.
// 예시 3-1
// ...
return (
React.createElememt('div', {id: 'content'},
React.createElement('div', null, 'hello'),
React.createElement('p', null, 'hi'));
)
언제 컴포넌트 분리하는것이 좋을까?
한 컴포넌트에 여러개의 responsibilities가 있으면 state가 꼬일 수 있고, 의도한 대로 렌더링 되지 않을 수 있다. 한 컴포넌트에는 하나의 기능, 하나의 관심사만 갖는것이 좋다.
728x90
'Today I Learned' 카테고리의 다른 글
React+Vite 프로젝트 github pages로 배포하기 (0) | 2024.11.21 |
---|---|
[React] 이미지 파일은 어디에 두는 것이 좋을까 (0) | 2024.11.20 |
[JavaScript] 헷갈렸던 개념 간단 정리 (2) | 2024.11.20 |
React 간단 개요 (0) | 2024.11.18 |
Vite로 React + TypeScript 프로젝트 생성하기 (0) | 2024.08.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 멋쟁이사자처럼굿즈
- 해냄기록
- 티스토리챌린지
- 2021년회고
- 테크세미나
- 실무취업특강
- 멋쟁이톡
- 에러잡기
- #앞서가는개발자의비밀 #걸스인텍 #GirlsinTech #원티드
- 웹폰트최적화
- 링크드인실력평가
- 자바스크립트에러
- 멋쟁이사자처럼 프론트엔드스쿨
- 멋쟁이사자처럼
- LinkedIn Skill Assessment
- 멋사굿즈
- Til
- 멋사프론트엔드스쿨
- 링크드인보유기술
- IT행사
- 오블완
- 오픈소스컨트리뷰션아카데미
- 스터디회고
- 부트캠프지원후기
- 부트캠프합격후기
- IT행사참여후기
- CSS설계기법
- CSS함수
- 회고
- SW웰컴즈걸스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함