- React에서 UI Rendering과 Side Effect의 차이를 구분하여 설명할 수 있다.
- useEffect hook을 활용해 다양한 Side Effect를 일으킬 수 있다.
- useEffect hook을 활용해 원하는 타이밍에 Side Effect를 일으킬 수 있으며, 이 과정에서 일어나는 컴포넌트 렌더링 과정을 설명할 수 있다.
부작용, 부수효과로 감기약의 예시로 생각해 보자면 감기약의 주된 효과는 감기를 낫게하는것이지만 졸음이 오는 부작용이 발생된다.
부작용이란 단어는 부정적으로 인식되지만 사실 부정적인 의미를 내포하지 않고 주요한 효과 외에 부수적으로 발생하는 효과를 의미한다.
프로그래밍에서의 부작용이란 코드가 의도한 주된 효과 외에 추가적으로 발생하는 효과.
특히 프로그램을 이루는 가장 작은단위인 함수에서 쓰이는 용어로 함수에서 부작용이란 함수의 목적인 Input을 받아서 output을 산출하는 것 이 외의 모든 행위를 의미
외부의 값을 읽어오는 행위
외부의 값을 변경하는 행위
const sum = (x) => {
return x + 1;
};
const num = 1;
const sum = (x) => {
return x + num;
};
위의 요구사항을 모두 충족시키면서 편하게 side Effect를 발생시킬 수 있게 도와주는 useEffect
를 활용한다.
import { useEffect } from "react"
// 사용법
useEffect (실행시킬 동작, [타이밍] )
document.addEventListener("타이밍", 실행시킬 동작) // 추상화 한 예시
// 매 렌더링마다 Side Effect가 실행되어야 하는 경우
useEffect(() => {
// Side Effect
})
// Side Effect가 첫 번째 렌더링 이후 한번 실행되고,
// 이후 특정 값의 업데이트를 감지했을 때마다 실행되어야 하는 경우
useEffect(() => {
// Side Effect
},[value])
// Side Effect가 첫 번째 렌더링 이후 한번 실행되고,
// 이후 어떤 값의 업데이트도 감지하지 않도록 해야 하는 경우
useEffect(() => {
// Side Effect
},[])