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