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
- 정보처리기사실기
- 자바 구구단 출력
- 조코딩
- 자바
- 이클립스 DB연동
- java
- 자바 향상된 for문
- 자바 while문
- react with typescript
- TypeScript
- 프로그래머스
- 자바 for문
- 자바 공배수
- 자바 스캐너
- 자바 if문
- 자바 public
- 항해99 2기
- 자바 switch문
- 자바 조건문
- react ag grid
- 자바 자동캐스팅
- 자바 강제 캐스팅
- 자바 반복문
- 자바 삼항연산자
- 타입스크립트
- 변수
- 항해99
- Vue3
- Til
- MySQL
Archives
- Today
- Total
뇌 채우기 공간
[REACT] useCallback, React.memo로 함수 재사용, 컴포넌트 리렌더링 방지를 통한 최적화 작업 하기 (수정 필요) 본문
WEB/REACT
[REACT] useCallback, React.memo로 함수 재사용, 컴포넌트 리렌더링 방지를 통한 최적화 작업 하기 (수정 필요)
자바칩 프라푸치노 2021. 7. 31. 19:01useCallback으로 이전에 만들었던 함수 재사용 하기
컴포넌트가 리렌더링 될때마다 새로운 함수를 계속 만들고 있는 문제
-> 함수를 새로 만드는 것은 메모리도 cpu도 많이 차지하지는 않기 때문에 그 자체만으로 부하가 걸리진 않는다.
그럼에도 한번 만든 함수를 재사용할 수 있다면 재사용 하는게 좋다.
사용법
const onChange = useCallback(
e => {
const { name, value } = e.target;
setInputs({
...inputs,
[name]: value
});
},
[inputs]
);
이렇게 useCallback으로 감싸준다
그러면 deps에 넣은 값이 바뀔때만 함수가 새로 만들어진다.
여기서는 inputs가 바뀔때만 함수가 새로 만들어진다.
이렇게만 해놓는다고 해서 최적화가 이루어지지는 않는다.
구글에서 react dev tools를 설치한다.
이 확장 프로그램을 사용하면 렌더링 되는 컴포넌트를 확인할 수 있다.
React.memo를 사용하여 불필요한 컴포넌트 리렌더링 방지
사용법
export default React.memo(CreateUser);
컴포넌트를 export할때 React.memo로 감싸주면
props가 바뀌었을때만 리렌더링 된다.
const User = React.memo(function User({ user, onRemove, onToggle }) {
return (
<div>
<b
style={{
cursor: 'pointer',
color: user.active ? 'green' : 'black'
}}
onClick={() => onToggle(user.id)}
>
{user.username}
</b>
<span>({user.email})</span>
<button onClick={() => onRemove(user.id)}>삭제</button>
</div>
);
});
이렇게 함수자체를 React.memo로 감싸줄 수도 있다 .
참고: 벨로퍼트
728x90
'WEB > REACT' 카테고리의 다른 글
[REACT] react transition group /리액트 라우터에 애니메이션 주기, 슬라이드 애니메이션, 특정 페이지에만 라우트 애니메이션 (0) | 2021.08.21 |
---|---|
[REACT] useReducer로 상태 업데이트 컴포넌트 외부에서 사용하기 (0) | 2021.07.31 |
[React] useMemo 를 사용하여 연산한 값 재사용하기/ 검색기능에 적용(ing) (0) | 2021.07.21 |
[React] useEffect를 사용하기 / 마운트, 언마운트, 업데이트 (0) | 2021.07.21 |
[React] 배열에서 원소 삭제하기 filter (0) | 2021.07.21 |