https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/
props
로 받아온 것을 state
에 넣어주고 싶을 때 사용함.componentDidUpdate
에서 받아와서 사용을 할 수 있음.https://wavez.github.io/react-hooks-lifecycle/
componentDidMount
: 클래스형 컴포넌트가 마운트 될 때 호출되는 메서드. 함수형 컴포넌트에서는 useEffect
Hook을 사용하여 이 기능을 대체할 수 있음. useEffect
의 두 번째 인자로 빈 배열 []
을 전달하면 컴포넌트가 마운트 될 때만 콜백 함수가 실행됨.useEffect(() => {
// componentDidMount 대체
}, []);
componentDidUpdate
: 클래스형 컴포넌트가 업데이트 될 때 호출되는 메서드두. 마찬가지로 useEffect
Hook을 사용하여 이 기능을 대체할 수 있음. 두 번째 인자를 생략거나 특정 값들의 배열을 전달하면 컴포넌트가 업데이트 될 때마다 콜백 함수가 실행됨.useEffect(() => {
// componentDidUpdate 대체
// 두 번째 인자 생략하거나 특정 값의 배열 전달
});
componentWillUnmount
: 클래스형 컴포넌트가 언마운트 될 때 호출되는 메서드. 함마찬가지로 useEffect
Hook의 반환값으로 정리(clean-up) 함수를 제공하여 이 기능을 대체할 수 있음. 마운트 시 실행된 콜백 함수의 반대 작업을 수행하는 clean-up 반환하면 언마운트 시 호출됨.useEffect(() => {
// componentDidMount와 componentDidUpdate 대체
return () => {
// componentWillUnmount 대체
};
}, []);
const [state, setState] = useState(initialState);
const contextValue = useContext(MyContext);
const [state, dispatch] = useReducer(reducer, initialState);
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
const memoizedCallback = useCallback => {
// 함수 내용
}, [dependency]);
refContainer = useRef(initialValue);
useLayoutEffect(() => {
// 함수 내용
}, [dependency]);
라이프 사이클이란 생명주기를 말하며, 컴포넌트 라이프 사이클은 컴포넌트가 브라우저상에 나타나고(Mount) 업데이트 되고(Update) 사라지는(Unmount) 일련의 과정을 의미함.
최신의 리액트 버전에서 사용하는 함수형 컴포넌트에서는 기존 클래스 컴포넌트에서의 라이프사이클의 몇 가지 단점을 보완하기 위해 이러한 과정을 유사한 기능인 훅으로 대체함.