계속 잊어버리는 useEffect 에서 대해서
정리해보려고 한다.
useEffect란?
useEffect는 리액트 컴포넌트가 렌더링될 때마다 특정 작업을 수행하도록 설정할 수 있는 Hook, 즉 어떤 컴포넌트가 화면에 보여졌을 때 내가 무언가를 실행하고 싶다면? 또는 어떤 컴포넌트가 화면에서 사라졌을 때 무언가를 실행하고 싶다면? useEffect를 사용한다.
코드로 보기
렌더링될 때 useEffect 안에 있는 console.log가 실행된다. 이게 useEffect 핵심 기능
import React, { useEffect } from "react";
const App = () => {
useEffect(() => {
console.log("hello useEffect");
});
return <div>Home</div>;
}
export default App;
useEffect와 리렌더링(re-rendering)
useEffect가 속한 컴포넌트가 화면에 렌더링 될 때 실행되기에 의도치 않은 동작을 경험할 수도 있다.
아래 코드를 보면 input 에 타이핑 될 때마다 리렌더링이 되고 useEffect가 계속 실행된다.
import React, { useEffect, useState } from "react";
const App = () => {
const [value, setValue] = useState("");
useEffect(() => {
console.log("hello useEffect");
});
return (
<div>
<input
type="text"
value={value}
onChange={(event) => {
setValue(event.target.value);
}}
/>
</div>
);
}
export default App;
의존성 배열
해당 배열에 값이 들어가고 그 값이 바뀔 때만 useEffect를 실행할 수 있게 설정한다.
useEffect(()=>{
// 실행하고 싶은 함수
}, [의존성배열])
아래 코드처럼 useEffect의 의존성배열에 아무것도 넣지 않으면 처음에 딱 한번만 실행되고 그 이후로는 어떤일이 일어나지 않는다.
useEffect(()=>{
// 실행하고 싶은 함수
}, [])
'회고록&간단정리' 카테고리의 다른 글
[회고 : 24.04.22] javaScript의 this (0) | 2024.04.22 |
---|---|
[회고 : 24.04.17] 언어 공부는 코드로 직접 (0) | 2024.04.17 |
[회고 : 24.02.11] 리액트 props 구조 분해 할당 (0) | 2024.02.11 |
HttpServletRequest To MultipartFile (0) | 2024.01.08 |
[회고 : 24.01.08] AS-IS 소스 분석 (0) | 2024.01.08 |