일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- API token
- bootstrap
- typescript react
- github io
- react typescript
- github
- nextjs
- API 토큰
- styled components
- git lab
- react
- input type=file
- CSS
- getModifierState
- dart 변수
- rewrites
- next.js css
- ngrok실행
- nextjs 설치
- SCSS
- fetch
- createGlobalStyle
- 컨디셔널 렌더링
- nextjs .env
- Git
- react env
- There isn’t anything to compare
- ngrok설치
- npm styled-reset
- icon
- Today
- Total
꾸준히 성장하는 개발자
[React Hooks] useEffect( ) 본문
useEffect( )
- side effect를 다룰때 사용하는 hooks
sideEffect란?
- 함수가 실행되면서 함수 외부에 존재하는 값이나 상태를 변경시키는 등의 행위
- 데이터 가져오기, 구독(subscription) 설정하기, 수동으로 React 컴포넌트의 DOM을 수정하는 것까지
이 모든 것이 sideEffect에 해당한다.
- 페이지가 처음 렌더링 되고 난후 한번 무조건 실행된다.
- useEffect에 배열로 지정한 useState의 값이 변경되면 실행된다.
useEffect 함수의 첫번째 인자 : 렌더링 이후 실행할 함수
useEffect 함수의 두번째 인자 : dependency array(의존성 배열)
1. useEffect(( )=> { } ) : 항상 렌더가 된 직후에는 무조건 안의 함수 실행
2. useEffect(( )=> { } , [ ]) : 최초(마운트 될 때)에만 실행이 된다.
3. useEffect(( )=> { } , [특정 변수 또는 오브젝트]) 변수가 변화하면 실행된다.
import { useEffect } from "react";
const App = () => {
const [value, setValue] = React.useState("");
useEffect(() => {
let timer = setTimeout(() => console.log(value), 3000);
}, [value]);
return (
<input
type="number"
onChange={(e) => {
setValue(e.target.value);
}}
/>
);
};
value가 변할때마다 useEffect가 실행되면서 timer가 실행된다.
useEffect(() => {
let timer = setTimeout(() => console.log(value), 3000);
}, [value]);
cleanUp
- useEffect()에서 parameter로 넣은 함수의 return 함수이다.
- useEffect에 대한 뒷정리함수라고 생각하면 된다.
import { useEffect } from "react";
const App = () => {
const [value, setValue] = React.useState("");
useEffect(() => {
let timer = setTimeout(() => console.log(value), 3000);
return () => {
clearTimeout(timer);
};
}, [value]);
return (
<input
type="number"
onChange={(e) => {
setValue(e.target.value);
}}
/>
);
};
마운트 될때를 제외하고
return () => {
clearTimeout(timer);
};
return () =>{ } 이 먼저 실행되고
let timer = setTimeout(() => console.log(value), 3000);
그다음 앞의 것들이 실행이 된다.
1. 언마운트 될 때만 cleanup 함수를 실행하고 싶을 때
- 두번째 인자에 빈 배열을 넣는다.
2. 특정값이 업데이트 되기 직전에 cleanUp 함수를 실행하고 싶을 때
- 두번째 인자로 배열 안에 검사하고 싶은 값을 넣어준다.
'React' 카테고리의 다른 글
[React] 컨디셔널 렌더링 ?? (0) | 2022.05.31 |
---|---|
[React with TypeScript] (1) | 2022.05.27 |
[React Hooks] useMemo() / useCallback() / useMemo() ↔ React.memo() 차이 (0) | 2022.05.24 |
[React Hooks] useRef (0) | 2022.05.23 |
[React] React state 비동기성 (0) | 2022.05.20 |