본문 바로가기

Front-End/React

React #4 (key & children 속성)

반응형

※ 앞으로 설명을 적기 전 사전 작업은 더보기 글로 쓸 예정입니다.

더보기

프로젝트 생성

npx create-react-app ch02_4 --template typescript

 

이전 프로젝트의 소스 코드 

https://github.com/yisj777s/doit-react-webapp-typescript/tree/main/ch02/ch02_3/src/data

# 소스코드 파일이 들어갈 경로
ch02_4/src/data

 패키지 설치

npm i chance luxon				# 패키지 설치
npm i -D @types/chance @types/luxon		# dev용 패키지 설치
npm start					# 웹 서버 가동

 

 

Key 속성

- 같은 이름의 컴포넌트가 여러 개일 때, 구분하려고 고유한 'key'값을 통해 설정하기 위함. 

export default function App() {
	const texts = [<p>hello</p>, <p>world</p>]
	return <div>{texts}</div>
}
// p태그 라는 컴포넌트가 2개로 중복이 되어, 고유한 key 값이 필요하다.

 

↓ 오류

 

key 값 부여해서 호출하기 (일일이 부여해도 되지만, map으로 받는 게 더 효율적임.)

// map 메서드를 이용해서 [A, B] 형태의 배열을 (text, index)로 반환 받아서 사용하기
export default function App() {
  const texts = ["hello", "world"].map((text, index) => (
    <p key={index}>{text}</p>
  ));
  return <div>{texts}</div>
}

 

 

 

children 속성

- 쉽게 말하면 컴포넌트(html에서 말하는 태그) 아래의 자식 요소들을 전부 지정/가져옴.

- 재사용성, 유연성, 컴포지션(작은 컴포넌트를 합쳐 큰 컴포넌트로)

- div 같은 자식 요소를 포함할 수 있는 컴포넌트에서먼 사용 가능 (img, input 등등은 불가능)

 

 

P 컴포넌트를 사용하는 방식 (결과는 위의 hello world 캡쳐와 같음)

export default function App() {
  const texts = ["hello", "world"].map((text, index) => (
    <p key={index} children={text} />
  ));
  return <div children={texts} />;

 

 

그래도 children을 쓸 때에는 부모 요소가 있어야 함. (↓ 오류)

 

 

 

 

반응형

'Front-End > React' 카테고리의 다른 글

React #6 (CSS - bootstrap)  (1) 2025.07.09
React #5 (이벤트)  (2) 2025.07.09
React #3 (컴포넌트)  (0) 2025.07.08
React #2 (가상 DOM + JSX)  (0) 2025.07.08
React #1 (간단한 프로젝트 샘플 실습)  (0) 2025.07.08