컴포넌트 상태관리를 도와주는 리액트 훅
const [<상태 값 저장 변수>, <상태 값 갱신 함수>] = useState(<상태 초기 값>);
const [name, setName] = useState('hyo');
function handleClick() {
setName('cho');
setAge(a => a + 1);
// ...
set함수를 사용하여 상태를 업데이트하고 렌더링 시킬 수 있다. 다음 상태를 직접 전달하거나 이전 상태에서 계산하는 함수를 전달할 수 있다.
없음
💥set 함수를 호출해도 이미 실행 중인 코드의 현재 상태는 변경되지 않는다.
✨다음 렌더링부터 시작하여 useState가 반환하는 항목에만 영향을 미친다
import { useState } from 'react';
function MyComponent() {
const [age, setAge] = useState(20);
const [name, setName] = useState('hyo');
// ...
function handleClick() {
setName('cho');
console.log(name); // Still "hyo"!
}
}
//바뀐 값을 확인하려면 함수 바깥에서 console.log를 확인해보자.
function handleClick() {
setAge(age + 1); // setAge(20 + 1)
setAge(age + 1); // setAge(20 + 1)
setAge(age + 1); // setAge(20 + 1)
}
//age는 23이 아닌 21이다.
function handleClick() {
setAge(a => a + 1); // setAge(21 => 22)
setAge(a => a + 1); // setAge(22 => 23)
setAge(a => a + 1); // setAge(23 => 24)
}
현재 상태와 업데이트 된 상태가 동일하면 구성 요소와 자식을 다시 렌더링 하지 않는다. -> ✨최적화
렌더링 중에 set 함수를 호출하는 것은 현재 렌더링 컴포넌트 내에서만 허용된다.
기본적으로 비동기로 동작한다.
출처 : 리액트 공식 beta 문서