리액트 입문
튜토리얼
최신 흐름을 추구하는 리액트 강좌
리액트는 어쩌다가 만들어졌을까?
<h2 id="number">0</h2>
<div>
<button id="increase">+1</button>
<button id="decrease">-1</button>
</div>const number = document.getElementById('number');
const increase = document.getElementById('increase');
const decrease = document.getElementById('decrease');
increase.onclick = () => {
const current = parseInt(number.innerText, 10);
number.innerText = current + 1;
};
decrease.onclick = () => {
const current = parseInt(number.innerText, 10);
number.innerText = current - 1;
};
작업환경 준비
나의 첫번째 리액트 컴포넌트
JSX
props 를 통해 컴포넌트에게 값 전달하기
props의 개요
번거로운 props 과정을 생략하는 비 구조화 할당
defaultProps로 기본값을 할당해보자
defaultProps로 기본값을 할당해보자props.children 로 컴포넌트 태그사이의 값 조회하기
props.children 로 컴포넌트 태그사이의 값 조회하기조건부 렌더링
isSpecial 사용자 정의 props 설정 및 활용해보기
isSpecial 사용자 정의 props 설정 및 활용해보기조금더 축약된 표현을 활용해 본다면..
useState 를 통해 컴포넌트에서 바뀌는 값 관리하기
useState 를 통해 컴포넌트에서 바뀌는 값 관리하기 사용자 인터렉션에 변화에 따른 구현 방법
input 상태 관리하기
input 상태 관리하기 여러개의 input 상태 관리하기
input 상태 관리하기 코드에서 [name] : value, name:value 차이가 무엇인가요?

useRef 로 특정 DOM 선택하기
useRef 로 특정 DOM 선택하기 DOM을 선택해야하는 상황과 리액트에서 처리하는 방향
DOM을 선택해야하는 상황과 리액트에서 처리하는 방향특정 DOM의 포커싱에 대해 처리해보자
DOM의 포커싱에 대해 처리해보자배열 렌더링하기
배열 데이터 처리 변천
key Props



useRef 로 컴포넌트 안의 변수 만들기
useRef의 또다른 용도
위 용도를 통한 다양한 관리 사례
직접 실습하여 보자
배열에 항목 추가하기
배열에 대한 변화를 줄 시 주의점
배열에 항목 제거하기
배열에 항목 수정하기
간단한 색상 수정기능
구현 화면

useEffect를 사용하여 마운트/언마운트/업데이트시 할 작업 설정하기
useEffect를 사용하여 마운트/언마운트/업데이트시 할 작업 설정하기 useEffect를 통한 컴포넌트 마운트, 언마운트 관리
useEffect를 통한 컴포넌트 마운트, 언마운트 관리mount시 주요 작업 예시
mount시 주요 작업 예시unmount시 주요 작업 예시
unmount시 주요 작업 예시deps에 특정 값 넣기
deps에 특정 값 넣기deps 파라미터를 생략하는 경우

useMemo 를 사용하여 연산한 값 재사용하기
useCallback 를 사용하여 함수 재사용하기
사실은 useCallBack은 useMemo기반으로 만들어졌다.
useCallBack은 useMemo기반으로 만들어졌다.React DevTool

React.memo 를 사용한 컴포넌트 리렌더링 방지
완벽하지 않은 React DevTool V4.2
useMemo의 구성
useReducer 를 사용하여 상태 업데이트 로직 분리하기
useReducer 를 사용하여 상태 업데이트 로직 분리하기 useReducer는 무엇인가?
useReducer는 무엇인가?useReducer를 활용한 Counter 컴포넌트 구현
useReducer를 활용한 Counter 컴포넌트 구현useReducer를 활용한 App 컴포넌트 재구성
useReducer를 활용한 App 컴포넌트 재구성그래서 useState, useReducer는 언제 구분해서 활용하는가?
useState, useReducer는 언제 구분해서 활용하는가?그래서 본인은 useState or useReducer?
useState or useReducer?커스텀 Hooks 만들기
공통되는 로직을 관리해보자.
custom hooks : useState -> useReducer 전환 연습하기
useState -> useReducer 전환 연습하기본인은 어떤 식으로 전환했나요?
벨로퍼트는 어떻게 전환했는가?
그래서 본인과 벨로퍼트의 전환 방식에 대해서 느낀 점은?
Array.prototype.reduce를 잠깐 짚고 넘어가자
Context API 를 사용한 전역 값 관리
부모에게서 자식으로 "값"을 전달할 경우 고찰..
Context API
기본 코드
실습코드
벨로퍼트의 숙제 완료 코드(숙제 그만 좀..)
Immer를 사용한 더 쉬운 불변성 관리
Immer를 사용한 더 쉬운 불변성 관리 불변성의 중요성
그러나 불변성을 쉽게 지켜나가게 도와주는 Immer
ImmerImmer 설치
Immer 설치produce()
produce()기존 예제의 Reducer에서 활용해보기
Reducer에서 활용해보기Immer와 함수형 업데이트
편하긴 하나 주의해야할 점
클래스형 컴포넌트
함수형 컴포넌트가 하지 못하는 작업을 처리하자
클래스형 컴포넌트의 다양한 상황 해결방법
상태 선언, 업데이트 하기
setState의 함수형 업데이
LifeCycle Method
무엇을 공부하든 중요한 생명주기
생명주기 호출 과정

마운트
업데이트
getSnapshotBeforeUpdate의 활용 예 (스크롤바 유지하기)
언마운트
componentDidCatch 로 에러 잡아내기
Sentry 연동



그래서 실제로 프로덕션 환경에서 어떻게 활용하는가.
리액트 개발 할 때 사용하면 편리한 도구들




ESLint
Snippet
Last updated