-
[React] 컴포넌트의 Lifecycle🍓𝗪𝗲𝗯/𝖱𝖾𝖺𝖼𝗍 2021. 9. 18. 07:34
배경
컴포넌트의 인생.. 컴포넌트는 어떻게 살다가 죽을까?
생성되었다가 다른 페이지로 넘어가면 삭제되기도 한다! state가 바뀌면 업데이트(재렌더링)가 되기도 한다!
중간중간 Hook을 걸 수 있다. (삭제전에 이거 해줘! 이 컴포넌트 등장 전에 이거해줘!)
=> Hook으로 컴포넌트 인생 중간에 명령을 줄 수 있다.
예전에 class로 컴포넌트만들었을 때!
주로 쓰는 라이프사이클 훅은 아래와 같았다.
class Modal extends React.Component { componentDidMount() { // Modal 컴포넌트가 Mount(등장)했을 때 실행할 코드 ex) ajax 주로 사용한다 } componentWillUnmount() { // Modal 컴포넌트가 사라지기 직전에 실행할 코드 } }
요즘은! useEffect 훅
1. useEffect를 react 라이브러리에서 import해온다.
2. 컴포넌트 함수 내에서 useEffect(() => {})하여 사용한다.
- 컴포넌트가 mount(등장)되었을 때, 컴포넌트가 update될 때, 특정 코드를 실행할 수 있다.
- 컴포넌트가 unmount 사라질 때, 코드를 실행할 수 있다.
useEffect(() => { return function 함수명() {실행할코드 ~~ } // 사라질 때 코드가 실행된다. })
3. 여러개 사용가능
4. 조건 기능
다른 컴포넌트가 바뀌면 useEffect의 기존 것도 계속 재렌더링이 된다 (자원낭비) => useEffect를 예쁘게 써야한다!
특정state가 변경될 때만 실행해달라고 하면 된다!!
useEffect(() => { // 실행할 코드 }, [실행조건 state]);
실행조건에 있는 state가 변경될 때 실행된다.
실행조건에 있는 state를 여러 개 입력하고 싶으면 [state1, state2] 이런 식으로 추가하면 되고,
[]만 있을 경우에는 _state 아무것도 없는 공허한 state가 변경될 때 실행해달라는 뜻이므로 한번 딱 실행되고 코드가 영영 실행되지 않는다.
*참고 : 컴포넌트 내에서 setTimeout 실행시 주의점
컴포넌트가 사라질 때 타이머를 해제하는 것을 추가해야한다. clearTimeout
'🍓𝗪𝗲𝗯 > 𝖱𝖾𝖺𝖼𝗍' 카테고리의 다른 글
[React] Component 중첩 시 state 전달 (0) 2021.09.19 [React] Ajax란? Ajax 요청방법 (0) 2021.09.19 [React] SASS 문법 정리 (0) 2021.09.17 [React] styled-components로 CSS 스타일링 (0) 2021.09.17 [React] 페이지 나누기 (라우팅) (0) 2021.09.16