일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1883
- mosquitto
- pm2 시작
- setInterval 외부 정지
- setInterval 중지
- datagridview 직접입력
- pm2 확인
- DataGridView 직접 입력
- 서버동기화
- 맥 어드레스
- pm2 설치
- 데이터테이블 데이터 넣기
- mosquitto.conf
- pm2
- listener 1883
- DatePicker
- map이 undefined가 뜰 때
- setInterval clear
- allow_anonymouse
- AntDesign
- transfer
- html #select #option #multiple
- c# datagridview 데이터 넣기
- setInterval 정지
- invalid data
- mySQL_Replication
- 공인IP
- pm2 상태 확인
- Replication
- timepicker
- Today
- Total
개발 노트
The React Hooks - useCallback 본문
01.The React useCallback Hook은 memoized된 callback function을 반환한다.
w3schools 에서는 useCallback을 사용하면 값이 더는 계산될 필요가 없다고 저장하는 것으로 간주한다.라고 정의하고있다.
02.useCallback은 리소스가 집약된 함수들이 랜더될때마다 자동 실행되지 않게 격리한다.
즉 useMemo처럼 dependecies 업데이트 될때만 작동하도록 한다.
사용법또한 비슷하다.
useCallback(function, declare array), 함수와 의존하는 배열을 입력받고, 의존하는 값들이 바뀌지 않는 한 기존 함수를 계속해서 반환합니다.
즉 의존하는 값이 바뀌면 새로운 함수가 생성되어 함수의 변수에 할당되고, 의존하는 값이 동일하다면 다음 랜더링 때 이 함수를 재사용 한다.
const memoizedCallback = useCallback(함수, 배열);
const add = () => x + y; //매번 랜더링 된다.
const add = useCallback(() => x + y, [x, y]); //callback 사용
함수 의존 값
03.사용하는 이유
사실 component가 rendering될 때마다 함수를 새로 선언하는 것은 javascript가 브라우저에서 얼마나 빨리 실행되는지를
생각해보면 성능 상 큰 문제가 되지 않는다.
따라서 useCallback()을 사용하는 것은 큰 의미가 없거나 오히려 손해인 경우도 있다.
useCallback을 사용하는 한 가지 이유는 props가 변경되지 않는 한 component가 re-rendering되지 않도록 하기 위함이다.
**
useCallback() hook 함수는 자식 컴포넌트의 랜더링의 불필요한 랜더링을 줄이기 위해서
React.memo() 함수와도 사용할 수 있다.
간단한 예제는 아래의 주소에 가서 확인해보면 된다.
https://www.daleseo.com/react-hooks-use-callback/