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 |
Tags
- 탈출문자
- React
- vetor
- barplot in r
- 그래픽
- 이스케이프시퀀스
- barplot
- react #회원가입 #비밀번호비교
- 이용현황분석
- R 그래프
- 그대로 출력하기
- 값추가
- getline
- 배열삭제
- 버스분석
- await
- 백준 10172
- useState
- plot in r
- 10172
- 배열추가
- asynchronization
- 백준 11718
- setstate
- DataFrame
- 값삭제
- 광명시버스분석
- 데이터분석
- R데이터형태
- 백준
Archives
- Today
- Total
devlog_zz
React useMemo - 화면이 렌더링될때마다 함수의 불필요한 호출 방지 본문
728x90
위와 같이 1초마다 시간이 변경되는 화면이 있을 때 1초마다 화면이 렌더링되면서 화면에 모든 함수가 재호출 된다. compute() 함수도 매번 호출이 되어 콘솔창에 'test'가 찍힘을 확인할 수 있다.
즉 1초마다 refreshTime의 state가 변경되면서 App 컴포넌트가 리렌더링되기 때문에 모든 함수가 1초마다 호출된다.
const App = () => {
const [refreshTime, setRefreshTime] = useState(90);
...
const compute = (date:string) => {
console.log('test')
}
return(
<div>
<span>{refreshTime}초</span>
<h2>{compute(date)}</h2>
<div>
)
}
export default App;
이렇게 매번 호출되지 않고 date에 변경이 있을때만 compute함수를 호출하고 싶다면 'useMemo'를 사용하면 된다.
useMemo
useMemo를 사용하는 이유
React가 값을 기억해서 불필요한 리렌더링을 방지하기위해 사용한다.
자세하게는 dependencies가 변할 때만 값을 다시 생성한다. 따라서 불필요한 연산 또는 컴포넌트 재실행을 방지할 수 있다.
Memo는 memoization의 약자로 이전의 계산한 값을 재사용한다는 뜻이다.
useMemo 사용법
const 변수이름 = useMemo(() => 호출할함수(a, b), [a, b]);
useMemo의 첫 번째 파라미터 : 호출할 함수useMemo의 두 번째 파라미터 : 의존성(deps) 배열
따라서 위의 코드를 아래와 같이 useMemo를 사용하여 변경할 수 있다. useMemo를 사용하면 매초마다 화면이 렌더링될때마다 compute함수가 매번 호출되는게 아닌, compute함수가 의존성을 가진 date가 변경될때만 compute함수가 호출된다.
const App = () => {
const [refreshTime, setRefreshTime] = useState(90);
...
const compute = (date:string) => {
console.log('test')
}
const computedTime = useMemo(() => compute(date), [date]);
return(
<div>
<span>{refreshTime}초</span>
<h2>{computedTime}</h2>
<div>
)
}
export default App;
728x90
'Front End > React' 카테고리의 다른 글
vite proxy 설정하기 (0) | 2022.11.09 |
---|---|
[오류해결] You are running `create-react-app` 4.0.3, which is behind the latest release (5.0.1). We no longer support global installation of Create React App. (0) | 2022.10.19 |
useState 변경함수 바로 업데이트 안되는 이슈 - setState()는 비동기 함수 (0) | 2022.07.31 |
useEffect 호출 안되는 (변경 인지 못하는) 버그 잡기 ( Recoil ) (0) | 2022.07.31 |
부모 Component에서 자식 Component로 setState 전달하기 (0) | 2022.05.10 |
Comments