Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ZuulFilter
- 이분 매칭
- 달팽이
- Spring Cloud Config
- spring boot
- spring cloud
- 스프링 시큐리티
- dp
- 서비스 디스커버리
- 백트래킹
- 트리
- 다익스트라
- Java
- 구현
- BFS
- 비트마스킹
- docker-compose
- 주울
- Gradle
- 게이트웨이
- 스택
- 이분 탐색
- 완전 탐색
- Zuul
- 플로이드 와샬
- 메모이제이션
- Logback
- 구간 트리
- 유레카
- 도커
Archives
- Today
- Total
Hello, Freakin world!
[React] useEffect 정리하기 본문
UseEffect 훅의 용도
리액트 컴포넌트가 렌더링될 때마다 특정 작업을 수행하도록 설정할 수 있는 Hook
예제 코드
import {useEffect} from "react";
function App() {
useEffect(() => {
console.log("화면 렌더링 됨.");
})
return (
<div>
<h1>Hello</h1>
</div>
);
}
export default App;
return 문에 정의된 JSX가 렌더링 될때마다 useEffect가 호출됩니다.
useEffect의 파라미터
function useEffect(effect: EffectCallback, deps?: DependencyList): void;
useEffect 함수는 화면이 렌더링 될 때 실행할 콜백 함수와 렌더링을 유발하는 대상 리스트를 파라미터로 넘겨줄 수 있습니다.
그냥 넘어가면 섭섭하니 EffectCallback이란 타입도 한 번 살펴보고 넘어갈 필요가 있겠네요.
effect : EffectCallback
type EffectCallback = () => (void | (() => void | undefined));
위와 같은 타입식이 나왔네요.
콜백 함수는 리턴 값으로 void 나 인자없이 void를 반환하는 함수를 반환할 수 있네요.
void를 반환하는 경우는 위의 예제와 같습니다. 화면이 렌더링 될 때 함수의 로직이 실행됩니다.
하지만 함수를 반환하는 경우, 그 함수는 컴포넌트가 언마운트되기 전이나 업데이트 되기 직전에 실행됩니다.
예제 코드
import {useEffect, useState} from "react";
function App() {
const [toggle, setToggle] = useState(false);
useEffect(() => {
console.log("화면 렌더링 됨.");
return () => {
console.log("cleanup");
}
})
const onClick = () => {
setToggle(prev => !prev);
console.log(`toggle : ${toggle}`)
}
return (
<div>
<h1>Hello</h1>
<button onClick={onClick}>리렌더링 버튼</button>
</div>
);
}
export default App;
toggle 이라는 상태 변수를 정의하고, 버튼을 통해 이 값이 계속 변하도록 만들었습니다.
기본적으로 state가 변하면 리액트는 컴포넌트를 리렌더링하게 됩니다.
크롬 콘솔을 통해 toggle 값이 변하면서 렌더링 전에 cleanup이 콘솔에 찍히는걸 확인할 수 있습니다.
deps : DependencyList
type DependencyList = ReadonlyArray<any>;
타입 이름만 봐도 배열을 감싸 읽기만 가능하게 만든 클래스처럼 보이네요.
특정 값이 업데이트 될 때만 콜백함수를 실행시키고 싶을 때, 이 파라미터에 그 특정 대상을 지정해줄 수 있습니다.
'Web > React' 카테고리의 다른 글
첫날 리액트 배운 것들 정리 (0) | 2021.06.26 |
---|
Comments