학습 목표
- React의 3가지 특징에 대해서 이해하고, 설명할 수 있다.
- JSX가 왜 명시적인지 이해하고, 바르게 작성할 수 있다.
- React 컴포넌트(React Component)의 필요성에 대해서 이해하고, 설명할 수 있다.
JavaScript XML
React에서 UI를 구성할 때 사용하는 JavaScript를 확장한 문법
브라우저가 바로 실행할 수 있는 코드가 아니기 때문에 'Babel'을 사용해 JavaScript로 컴파일
JSX를 사용하면 JavaScript만으로 마크업 형태의 코드를 작성하여 DOM에 배치할 수 있게 됨
HTML처럼 생겼지만, HTML이 아님(❗️)
구조와 동작에 대한 코드를 한 뭉치로 적은 코드셋을 컴포넌트라고 함
className
으로 표기map()
사용map()
은 배열을 순회하면서 각 요소를 변환하고, 변환된 요소로 새로운 배열을 생성하는 메서드
React 컴포넌트에서 동적으로 리스트를 생성하거나, 배열의 각 요소를 가공하여 렌더링하는 데 자주 사용
기본 구문
arr.map(callback(currentValue, index, array), thisArg)
// arr: 배열로 map() 함수를 호출하는 배열
// callback: 배열의 각 요소에 대해 실행되는 함수로, 각 요소를 변환하고 새로운 값을 반환
// callback은 다음 매개변수를 가질 수 있다:
// currentValue: 현재 순회 중인 요소의 값
// index (선택사항): 현재 순회 중인 요소의 인덱스
// array (선택사항): map()을 호출한 배열
// thisArg (선택사항): callback 함수 내에서 사용될 this 값
// React 예시
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const UserList = () => {
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
};
// users 배열을 순회하면서 각 사용자에 대해 `<li>` 요소를 생성
// key prop은 고유한 식별자를 제공하여 React가 리스트 항목을 효율적으로 관리할 수 있도록 함
React가 어떤 항목을 변경, 추가 또는 삭제할지 식별하는 것을 도움
key 속성의 위치는 map 메서드 내부에 있는 엘리먼트 즉, 첫 엘리먼트에 넣음(안정적인 고유성 부여)
key 속성값은 가능하면 데이터에서 제공하는 id를 할당
React Key
하나의 기능을 구현하기 위한 여러 종류의 코드 묶음
UI를 구성하는 필수 요소
각자 독립적인 기능을 가지고 있는데, 이러한 컴포넌트를 여러 개 만들고 조합하여 애플리케이션을 만들 수 있음
모든 React는 최소 한 개의 컴포넌트를 가지고 있음
학습 목표
- Create React App 소개를 보고, Create React App 이 무엇인지 대략적으로 이해할 수 있다.
- npx create-react-app으로 새로운 리액트 프로젝트를 시작할 수 있다.
- create-react-app으로 간단한 개발용 React 앱을 실행할 수 있다.
- 리액트 랜덤 명언 앱 튜토리얼을 따라 간단한 리액트 랜덤 명언 앱을 만들 수 있다.
- Create React App으로 만들어진 리액트 프로젝트 구성을 대략적으로 이해할 수 있다.
React SPA를 쉽고 빠르게 개발할 수 있도록 만들어진 툴 체인
초기 프로젝트 설정 및 구성, 개발 서버 제공, 빌드 스크립트 설정 등을 자동화하여 빠르게 시작할 수 있도록 지원
장점
✔️)
* 캐싱 : 이전에 요청된 데이터나 리소스를 저장하여 동일한 요청이 발생했을 때, 서버에 다시 요청하는 대신 저장된 데이터를 사용하는 것
* 파일명 해싱 : 정적 파일의 이름을 변경하는 기술, 해싱 알고리즘을 사용하여 파일의 내용을 기반으로 고유한 해시값을 생성하고, 이 해시값을 파일 이름에 포함시킨다.
파일의 내용이 변경될 때마다 새로운 파일명이 생성되므로 브라우저가 이전에 캐시한 파일과 구분 가능
* 캐시 무효화 : 브라우저나 서버에 저장된 캐시를 강제로 제거하여 새로운 리소스를 가져와야 함을 알리는 것
npx create-react-app@latest 폴더이름