리액트(React)는 컴포넌트 기반의 자바스크립트 라이브러리로, 각 컴포넌트는 특정한 생명주기(life cycle)를 가집니다. 생명주기는 컴포넌트가 생성되고, 업데이트되며, 소멸되는 과정을 설명하는데, 이는 개발자가 특정 시점에 원하는 작업을 수행할 수 있도록 도와줍니다. 이 글에서는 리액트 컴포넌트의 생명주기에 대해 자세히 알아보겠습니다.
리액트 컴포넌트의 생명주기는 크게 세 단계로 나눌 수 있습니다:
1. 마운트(Mounting)
2. 업데이트(Updating)
3. 언마운트(Unmounting)
각 단계는 여러 생명주기 메서드로 구성되어 있으며, 이 메서드들은 특정 시점에 자동으로 호출됩니다.
마운트 단계는 컴포넌트가 생성되고, DOM에 삽입되는 과정을 말합니다. 이 단계에서 호출되는 주요 생명주기 메서드는 다음과 같습니다:
constructor():
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
}
static getDerivedStateFromProps(props, state):
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.value !== prevState.value) {
return { value: nextProps.value };
}
return null;
}
render():
render() {
return <div>{this.state.count}</div>;
}
componentDidMount():
componentDidMount() {
// 데이터 로드 등 초기화 작업
}
업데이트 단계는 컴포넌트의 상태(state)나 속성(props)이 변경될 때 발생합니다. 이 단계에서 호출되는 주요 생명주기 메서드는 다음과 같습니다:
static getDerivedStateFromProps(props, state):
shouldComponentUpdate(nextProps, nextState):
shouldComponentUpdate(nextProps, nextState) {
return nextState.count !== this.state.count;
}
render():
getSnapshotBeforeUpdate(prevProps, prevState):
getSnapshotBeforeUpdate(prevProps, prevState) {
if (prevProps.list.length < this.props.list.length) {
return this.listRef.scrollHeight;
}
return null;
}
componentDidUpdate(prevProps, prevState, snapshot):
componentDidUpdate(prevProps, prevState, snapshot) {
if (snapshot !== null) {
this.listRef.scrollTop = this.listRef.scrollHeight - snapshot;
}
}
언마운트 단계는 컴포넌트가 DOM에서 제거되는 과정을 말합니다. 이 단계에서 호출되는 주요 생명주기 메서드는 다음과 같습니다:
componentWillUnmount() {
clearInterval(this.timerID);
}
리액트 컴포넌트의 생명주기는 컴포넌트의 생성부터 소멸까지의 과정을 관리합니다. 각 생명주기 메서드를 통해 개발자는 특정 시점에 원하는 작업을 수행할 수 있습니다. 이를 통해 효율적이고 유지보수 가능한 리액트 애플리케이션을 개발할 수 있습니다.
리액트의 생명주기를 이해하고 적절히 활용하면, 더 나은 성능과 사용자 경험을 제공하는 애플리케이션을 만들 수 있습니다. 이 글이 리액트 생명주기에 대한 이해를 돕는 데 도움이 되었기를 바랍니다.