복습공부 이론

React의 상태(state)와 생명주기(life cycle)

alsdnr6672 2024. 9. 30. 08:58

React의 상태(state)와 생명주기(life cycle)에 대해 


1. **정의**: 상태는 컴포넌트의 데이터나 정보를 저장하는 객체입니다. 각 컴포넌트는 고유한 상태를 가질 수 있으며, 상태가 변경될 때마다 컴포넌트가 다시 렌더링됩니다.

2. **상태 관리**:
   - **useState Hook**: 함수형 컴포넌트에서 상태를 관리하기 위해 사용합니다.
     ```jsx
     import React, { useState } from 'react';

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

       return (
         <div>
           <p>You clicked {count} times</p>
           <button onClick={() => setCount(count + 1)}>
             Click me
           </button>
         </div>
       );
     }
     ```

3. **상태의 불변성**: 상태는 직접 수정하지 않고, 항상 새로운 상태 객체를 생성하여 업데이트해야 합니다. 이는 React가 상태 변경을 감지하고 효율적으로 렌더링할 수 있도록 돕습니다.

### 생명주기 (Life Cycle)

1. **정의**: 생명주기는 컴포넌트가 생성되고, 업데이트되며, 제거되는 과정을 말합니다. React 컴포넌트는 여러 단계의 생명주기를 거칩니다.

2. **생명주기 메서드** (클래스형 컴포넌트):
   - **componentDidMount**: 컴포넌트가 처음 렌더링된 후 호출됩니다. API 호출이나 초기 설정에 주로 사용됩니다.
   - **componentDidUpdate**: 상태나 프롭이 변경된 후 호출됩니다. 이전 상태와 비교하여 특정 작업을 수행할 수 있습니다.
   - **componentWillUnmount**: 컴포넌트가 제거되기 전에 호출됩니다. 리소스 해제나 구독 취소 등에 사용됩니다.

3. **Hook을 통한 생명주기 관리** (함수형 컴포넌트):
   - **useEffect Hook**: 생명주기 메서드의 역할을 수행합니다. 의존성 배열을 통해 특정 조건에서만 실행되도록 설정할 수 있습니다.
     ```jsx
     import React, { useEffect } from 'react';

     function Example() {
       useEffect(() => {
         // 컴포넌트가 마운트될 때 실행
         console.log('컴포넌트가 마운트되었습니다.');

         return () => {
           // 컴포넌트가 언마운트될 때 실행
           console.log('컴포넌트가 언마운트되었습니다.');
         };
       }, []); // 빈 배열은 마운트와 언마운트 시점에만 실행됨을 의미

       return <div>안녕하세요!</div>;
     }
     ```

### 요약

- **상태**는 컴포넌트의 데이터로, `useState`를 통해 관리하며, 직접 수정하지 않고 불변성을 유지해야 합니다.
- **생명주기**는 컴포넌트의 생성, 업데이트, 제거 과정을 설명하며, 클래스형 컴포넌트의 생명주기 메서드와 함수형 컴포넌트의 `useEffect`로 관리할 수 있습니다.

이 두 가지 개념은 React에서 컴포넌트를 효과적으로 관리하는 데 매우 중요한 역할을 합니다. 

'복습공부 이론' 카테고리의 다른 글

Servlet 종류  (1) 2024.09.30
Servlet  (0) 2024.09.30
관계형 데이터베이스(RDB)  (1) 2024.09.30
Web server 와 WAS 의 차이점  (1) 2024.09.30
프레임워크(Framework), 라이브러리(Library)  (3) 2024.09.08