프론트엔드/React

[React] 리액트에서 Destructuring으로 state 선언하는 방법

여행자0 2025. 2. 4. 01:32

리액트에서는 useState를 사용하여 state(상태)를 선언할 때,

구조 분해 할당(Destructuring Assignment)를 활용할 수 있다.

 

 

1. 기본적인 useState 선언 (Destructuring 사용)

리액트의 useState는 배열을 반환하는데, **첫번째 값은 state**이고, 두번째 값은 **상태를 변경하는 setter 함수**이다.

우리가 일반적으로 알고 있는 state 선언 방식 그 자체가 Destructuring을 사용한 거라 보면 된다.

const [count, setCount] = useState(0);

count → 현재 상태 값 (초기값 0)

setCount → 상태를 변경하는 함수

 

 

2. 객체 형태의 상태 선언하기 (Destructuring 활용)

function Example() {
  const [user, setUser] = useState({ name: "Alice", age: 30 });

  // 객체에서 특정 값만 구조 분해 할당하기
  const { name, age } = user;

  return (
    <div>
      <p>이름: {name}</p>
      <p>나이: {age}</p>
      <button onClick={() => setUser({ ...user, age: age + 1 })}>나이 증가</button>
    </div>
  );
}

 

라는 코드가 있다.

 

const { name, age } = user;

user 객체에서 name, age를 추출하여 변수로 선언.

 

setUser({ ...user, age: age + 1 });

기존 user 값을 유지하면서 age 값만 변경.

 

 

 

3. 배열 형태의 상태 선언하기

function Example() {
  const [fruits, setFruits] = useState(["Apple", "Banana", "Cherry"]);

  return (
    <div>
      <p>첫 번째 과일: {fruits[0]}</p>
      <button onClick={() => setFruits([...fruits, "Grapes"])}>과일 추가</button>
    </div>
  );
}

라는 코드가 있다.

{fruits[0]} 으로 첫번째 요소를 구조 분해 할당할 수 있다.

 

const [firstFruit, secondFruit] = fruits;

이렇게 하면 firstFruit="Apple", secondFruit="Banana" 가 된다.

 

setFruits([...fruits, "Grapes"])

이렇게 하면 기존 furits 에 "Grapes" 를 덧붙인 ["Apple", "Banana", "cherry", "Grapes"]가 된다.

 

 

정리

1. useState 는 배열을 반환 → 구조 분해 할당으로 [state, setState] 형태로 받음

2. 객체 상태를 사용할 때 { key1, key2 } = state 형태로 분해해서 사용 가능

3. 배열 상태도 구조 분해 할당 가능 → [ firstItem, secondItem ] = arrayState 형태로 사용 가능 

 

 

관련 포스트

아래 게시글의 3번 Destructuring을 참고하자

https://dev-traveler.tistory.com/39

 

[JavaScript] 리액트에서 자주 쓰는 자바스크립트 문법

자바스크립트가 진화되어 현재는 ES6 문법을 사용한다.ES6에서 자바스크립트를 쓰는 방법 몇가지를 정리해본다.  1. object shorthand assignmentlet name="traveler0"let age="20"/*let person={ name : name, age: age}*///

dev-traveler.tistory.com