Image Link : https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/
모든 컴포넌트는 여러 종류의 '생명주기 메서드'를 가지며, 이 메서드를 오버라이딩하여 특정 시점에 코드가 실행되도록 설정할 수 있다.
constructor()
, render()
, componentDidMount()
render()
, componentDidUpdate()
componentWillUnmount()
componentDidMount()
, componentDidUpdate()
, componentWillUnmount()
와 같은 목적으로 제공되지만, 하나의 API로 통합된 것이다.useEffect()
를 사용할 수 있다. (기능에 맞게 함수 분리)useEffect()
는 두 가지 인자( 함수, 배열(optional) )를 받는다.componentDidMount()
: 두 번째 인자가 빈 배열인 경우componentDidMount()
+ 값 변경 시 componentDidUpdate()
: 두 번째 인자가 값이 있는 배열인 경우componentDidMount()
+ 항상 componentDidUpdate()
: 두 번째 인자가 없는 경우componentWillUnmount()
: 첫 번째 인자인 함수에 또 다른 함수를 return 하는 경우import에 { useEffect }
추가
// Effect Hook을 사용하면 함수 컴포넌트에서 side effect를 수행할 수 있다.
import React, { useEffect } from 'react';
useEffect() 코드 작성
useEffect( 함수, 배열(optional) )
export default function App(props) {
const [state, setState] = useState(initialState)
// ↓ componentDidMount()
useEffect(() => {}, [])
// ↓ componentDidMount() + 배열의 값 변경 시 componentDidUpdate()
useEffect(() => {}, [state, props.a])
// ↓ componentDidMount() + componentDidUpdate()
useEffect(() => {})
// ↓ componentWillUnmount()
useEffect(() => {
return () => { cleanup }
}, [state, props.a])
return (
<div>App</div>
);
}