개발자의 logs
<개발공부, 개공> useEffect에 대해 알아보자. 본문
(이번 게시글은 리액트 공식 문서를 바탕으로 작성되었습니다.)
useEffect가 하는 일은 무엇일까요?
useEffect Hook을 이용하여 우리는 React에게 컴포넌트가 렌더링 이후에 어떤 일을 수행해야하는 지를 말합니다.
( => useEffect Hook을 통해 렌더링 후에 추가적인 일을 시킬 수 있다.)
React는 우리가 넘긴 함수를 기억했다가(이 함수를 ‘effect’라고 부릅니다) DOM 업데이트를 수행한 이후에 불러낼 것입니다. 위의 경우에는 effect를 통해 문서 타이틀을 지정하지만, 이 외에도 데이터를 가져오거나 다른 명령형(imperative) API를 불러내는 일도 할 수 있습니다.
( => useEffect를 통해서 함수를 기억했다가 DOM 업데이트 후에 실행가능하다. 데이터 가져오기, API 실행도 가능하다.)
useEffect를 컴포넌트 안에서 불러내는 이유는 무엇일까요?
useEffect를 컴포넌트 내부에 둠으로써 effect를 통해 count state 변수(또는 그 어떤 prop에도)에 접근할 수 있게 됩니다.
함수 범위 안에 존재하기 때문에 특별한 API 없이도 값을 얻을 수 있는 것입니다. Hook은 자바스크립트의 클로저를 이용하여 React에 한정된 API를 고안하는 것보다 자바스크립트가 이미 가지고 있는 방법을 이용하여 문제를 해결합니다.
useEffect는 렌더링 이후에 매번 수행되는 걸까요?
네, 기본적으로 첫번째 렌더링과 이후의 모든 업데이트에서 수행됩니다
마운팅과 업데이트라는 방식으로 생각하는 대신 effect를 렌더링 이후에 발생하는 것으로 생각하는 것이 더 쉬울 것입니다.
React는 effect가 수행되는 시점에 이미 DOM이 업데이트되었음을 보장합니다.
useEffect 사용법 :
import React, {useEffect} from 'react'
useEffect(() => {
console.log("마운트 시 실행");
},[])
useEffect(() => {
console.log(" 업데이트 시 실행");
}, [])
컴포넌트가 화면 렌더링 시 한번만 실행하고 싶다면 deps 위치에 빈 배열을 넣는다.
else => 안의 배열 안에 검사하고 싶은 값을 넣는다.
https://ko.reactjs.org/docs/hooks-effect.html
'개발 공부지식 > *개발 공부*' 카테고리의 다른 글
<개발공부, 개공> 스프링(Spring)이란 무엇인가? (0) | 2022.11.03 |
---|---|
<개발공부, 개공> DDD(도메인 주도 설계)란 무엇인가? (2) | 2022.10.23 |
React Hooks 란 무엇인가? (0) | 2022.09.29 |
<개발공부, 개공> TypeScript란 무엇인가? TypeScript를 쓰는 이유 (0) | 2022.08.31 |
<개발공부, 개공> Passport, Passport-local 개념정리 (0) | 2022.08.29 |