본문 바로가기
Frontend/ReactJS

[Nomad coders] React_Effects

by 모너아링 2022. 11. 10.

https://reactjs.org/docs/hooks-effect.html

 

Using the Effect Hook – React

A JavaScript library for building user interfaces

reactjs.org

Effects의 필요성

  • component가 매번 rerendering 되지 않고(useState 사용) 처음에만 코드가 실행되게 만들고 싶을 때
  • 첫 번째 render에만 코드가 실행되고, 이후 state 변화에는 실행되지 않도록 하기 위함
  • ex) API를 통해 데이터를 가져올 때
import { useState, useEffect } from "react";

function App() {
	const [counter, setValue] = useState(0);
  	const [keyword, setKeyword] = useState("");
  	const onClick = () => setValue((prev) => prev + 1);
  	const onChange = (event) => setKeyword(event.target.value);
    
        useEffect(() => {
            console.log("I run only once");
        }, []);

        useEffect(() => {
            console.log("i run when 'keyword' changes.");
        }, [keyword]);

        useEffect(() => {
            console.log("i run when 'counter' changes.");
        }, [counter]);
    
        return (
        <div>
          <input
            value={keyword}
            onChange={onChange}
            type="text"
            placeholder='Search here...'
          />
          <h1>{counter}</h1>
          <button onClick={onClick}>click me</button>
        </div>
        );
}

기본 형태

useEffect(() => {
      console.log("I run only once");
}, []);

→ 아무 조건 없이 처음 단 한 번만 render

 

useEffect(() => {
      console.log("i run when 'keyword' changes.");
}, [keyword]);

→ keyword가 변화할 때마다 render(한 글자마다 render)

 

useEffect(() => {
      console.log("i run when 'counter' changes.");
}, [counter]);

→ counter가 변화할 때마다 render(버튼 한 번 클릭 시 render)

 

결론적으로 useEffect의 첫 번째 인자로는 render 시 실행할 함수, 두 번째 인자로는 변화 여부에 따라 첫 번째 함수를 호출할 변수들의 리스트이다.

 

'Frontend > ReactJS' 카테고리의 다른 글

[React]서버로 데이터 보내기  (0) 2023.01.02
[React] selected  (0) 2022.12.27
[Nomad coders] React_Props  (0) 2022.11.08
[Nomad coders] React_응용  (0) 2022.11.08
[Nomad coders] React_State  (0) 2022.11.08