React

[ReactJS] useEffect

cob 2022. 8. 16. 09:10
컴포넌트는 state가 변경될 때 마다 계속 실행된다. useEffect는 한번만 실행이 필요한 코드를 사용하여 첫 렌더링 시점에만 실행되도록 만들어준다.

 

useEffect가 필요한 경우 
API를 통해 데이터를 가져올 경우 첫 번째 컴포넌트에서 렌더링할 때 API를 call하고, 이후에 state가 변환할 때, 그 API값을 또 다시 가져오지 않게 하기 위해 사용

 

 


1. useEffect는 두개의 파라미터를 가진다.

  • 첫 번째 param : 콜 백함수 (실행하고 싶은 함수 )
  • 두 번째 param : dependency , 원하는 state가 변경될 때 실행되게 만든다. “[]”로 주게되면 최초 렌더링 시점에만 실행되게 된다.
    dependency란?  react.js가 지켜보아야 하는 것들을 말한다.

 

 

 

2. 사용 방법  

import { useState, useEffect } from "react";

function App() {
	const [counter, setValue] = useState(0);
	const [keyword, setLeyword] = useState("");

	const onChange = (event) => setKeyword(event.target.value);
	const onClick = () => {setValue((prev) => prev+1);
	console.log("렌더링 될 때 마다 실행됨");
	
	useEffect(() => {
		console.log("첫 번재 렌더링에만 실행 됨");
	}, []);

	useEffect(() => {
		if(keyword !== "") {	
			console.log("keyword가 변경될 때 마다 실행됨");
		}
	}, [keyword]);

	useEffect(() => {
			console.log("keyword 또는 counter 가 변경될 때 마다 실행됨");
	}, [keyword, counter]);


	return (
		<div>
			<input value={keyword} onChange={onChange} type="text" placeholder"Search..." />
			<h1>{counter}</h1>
		</div>
	);
}

 

 

 

3. Cleanup 

컴포넌트(JSX)가 사라지거나 없어질 때 실행되게 만들어주는 함수
useEffect(() => {
	console.log("create");  
	
	return () => console.log("destroy"); 
},[]);
  • 컴포넌트가 파괴(destroy)될 때 function을 실행하고 싶으면, useEffect 함수에 새로운 function을 return해 주면 된다.
반응형

'React' 카테고리의 다른 글

[ReactJS] Style Components  (0) 2022.08.18
[ReactJS] React Router  (0) 2022.08.17
[ReactJS] React 설치(node.js, npx) 및 실행  (0) 2022.08.14
[ReactJS] props  (0) 2022.08.13
[ReactJS] Webpack  (0) 2022.08.12