일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java
- react hook
- 코딩테스트 고득점 Kit 완전탐색
- react
- 프로그래머스 완전탐색
- 리액트 훅
- 자바 공부
- 컴퓨터 네트워크
- 프로그래밍 언어론
- vanillaJS
- useState
- 장고
- codesandbox
- 프로그래머스 자바
- websocket
- 데이터모델링과마이닝
- 코틀린
- NextJS
- 프로그래머스
- 리액트
- 디자인 패턴
- react firebase
- JavaScript
- React JS
- 자바
- 코딩테스트 고득점 Kit
- design pattern
- 백준
- 자바스크립트
- useEffect
- Today
- Total
기록하는 개발자
[React] React Hook-2.0 useEffect 본문
useEffect
function useEffect(effect: EffectCallback, deps?: DependencyList): void
- 2개의 인자를 받는다. 첫 번째는 function으로써의 effect이고 두 번째는 list로써 dependency이다.
- deps가 있다면 effect는 deps list에 있는 값일 때만 값이 변하도록 활성화 된다.
- useEffect는 componentWillUnmount, componentDidMount, componentWillUpdate의 역할을 하는 funciton이다.
- dependency에 넣은 list의 상태가 변경되면 effect로 넣은 함수가 실행된다
- useEffect로부터 componentWillUnmount가 반환된다.
< App() >
import React, { useEffect, useState } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
export default function App() {
const sayHello = () => console.log("hello");
const [number, setNumber] = useState(0);
const [aNumber, setANumber] = useState(0);
useEffect(sayHello, [number]);
return (
<div className="App">
<div>Hi</div>
<button onClick={() => setNumber(number + 1)}>{number}</button>
<button onClick={() => setANumber(aNumber + 1)}>{aNumber}</button>
</div>
);
}
- 위 예시에서 useEffect는 componentDidMount와 componentWillUpdate이다.
sayHello를 component가 mount되었을 때 실행시키고 [number] list가 변경될 때만 실행한다.
- 만약 component가 mount 되었을 때 실행시킨 뒤 어떠한 경우에도 다시 실행시키고 싶지 않다면 빈 dependency를 전달하면 된다.
< 처음 mount 될 때 >
- 처음 mount 될 때 effect 함수가 실행되어 hello가 console 창에 찍힌다.
< 왼쪽 버튼 click >
- sayHello 함수가 작동하여 hello가 console 창에 찍힌다.
< 오른쪽 버튼 click >
- sayHello 함수가 작동하지 않아 hello가 console 창에 찍히지 않고 그대로 2를 유지한다.
'Web > React' 카테고리의 다른 글
[React] React Hook-2.2 useEffect를 활용한 useClick과 useRef (0) | 2021.09.30 |
---|---|
[React] React Hook-2.1 useEffect를 활용한 useTitle (0) | 2021.09.30 |
[React] React Hook-1.2 useState를 활용한 useTabs (0) | 2021.09.29 |
[React] React Hook-1.1 useState를 활용한 useInput (0) | 2021.09.29 |
[React] React Hook-1.0 useState (0) | 2021.09.29 |