State란?
- 컴포넌트가 가질 수 있는 상태 (동적인 값의 상태)
State의 종류
- 클래스형 컴포넌트의 state 속성 (React Hooks가 나오기 이전에 사용)
- 함수형 컴포넌트의 useState 함수 (16.8버전 이후)
Hooks란?
- 16.8버전 이후 새로 도입된 기능
- 함수형 컴포넌트에서 상태 관리를 할 수 있는 기능을 제공
기능 : 함수형 컴포넌트가 클래스형 컴포넌트의 기능을 사용할 수 있도록 해주는 기능
특징 : state와 lifecycle과 같은 기능을 사용 가능하게 해줌
종류 : useState, useEffect, useReducer, useMemo, useCallback, useRef
규칙 : 최상위에서만 호출, 오직 React 함수 내에서만 호출
useState()
함수형 컴포넌트가 가변적인 상태를 지닐 수 있도록 해 줌
import {useState} from 'react'
위의 형태로 'react'라는 모듈에서 useState를 named import해서 사용
const [value, setValue] = useState(값)
값의 형태 : 숫자, 문자열, 객체, 배열
리턴값
첫 번째 원소 : 현재상태
두 번째 원소 : 상태를 바꾸어 주는 함수
성능 최적화를 위해서는 useState()함수의 인자로 콜백 함수를 넣어줌
useEffect()
리액트 컴포넌트가 렌더링 될 때마다 특정 작업을 수행하도록 설정해주는 Hook
컴포넌트가 mount 됐을 때, unmount가 됐을 때, update 됐을 때 특정 작업을 처리할 수 있음
➡ 즉, 클래스형 컴포넌트에서 사용할 수 있던 생애주기 메소드를 함수형 컴포넌트에서도 사용⭕
최초에 한 번 실행하게 하고 싶은 작업을 작성할 때 주로 사용
callback함수와 dependency를 받는다.
import React, { useEffect } from 'react';
useEffect()의 매개변수에 콜백함수만 있는 경우
useEffect(() => {
// 작업
});
useEffect()의 매개변수에 콜백함수, 배열이 있는 경우
컴포넌트가 처음 렌더링 될 때 실행
value 값이 변경 되었을 때 실행
useEffect(() => {
// 작업
}, [value]);
mount될 때만 실행하고 싶을 때
한 번만 실행하고 싶을 때는 deps 위치에 빈 배열을 넣기
배열을 생략한다면 리랜더링 될 때마다 실행
useEffect(()=>{
console.log("렌더링이 완료되었습니다.");
console.log({names});
}, [])
특정 값이 update될 때만 실행하고 싶을 때
함수의 두 번째 매개변수 배열에 검사하고 싶은 값을 넣어 줌
useEffect(()=>{
console.log("렌더링이 완료되었습니다.");
console.log({names});
}, [names])
컴포넌트가 unmount 될 때, update 되기 직전
cleanup 함수 반환 (뒷정리 함수)
'꼼지락거리기' 카테고리의 다른 글
디스플레이 속성 (inline, inline-block, block) 4가지 특징 (0) | 2023.02.21 |
---|---|
React 개념 정리 Hooks useContext / useReducer (0) | 2023.02.13 |
React DOM, 리액트는 어떻게 돌아가는가? (0) | 2023.01.24 |
React에서 Recharts 라이브러리 사용하기 Chart.js보다 쉬운듯 (0) | 2023.01.03 |
JavaScript 개인 프로젝트 과거에서 온 기록 (0) | 2022.12.26 |