[React.js] 최상위 API React.memo
2021. 12. 11. 20:51ㆍReactJS/Information
React.memo는 useMemo Callback과 동일한 개념인데, 이제 Hook이 아니라 Component를 감싸는 API다.
React.memo를 사용하면 감싸고 있는 Component의 Props가 바뀌면 다시 Rendering 하지 않는다.
사용방법은 매우 간단하다.
MemoComponent.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import React from "react"
interface IMemoComponentProps {
message: string
}
function MemoComponent({message}: IMemoComponentProps) {
console.log("Memo Component!")
return (
<>
<span>{message}</span>
</>
)
}
export default React.memo(MemoComponent);
|
cs |
export default할 때 React.memo로 감싸준다.
App.tsx
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
32
|
import React, { createContext, useState, useEffect } from 'react';
import MemoComponent from "./MemoComponent"
export const CounterContext = createContext({
parent: "App"
});
function App() {
const [memoMessage, setMemoMessage] = useState<string>("")
const [tempState, setTempState] = useState<boolean>(true)
useEffect(() => {
setTimeout(() => {
console.log("MemoMessage")
setMemoMessage("TEST")
}, 3000)
setTimeout(() => {
console.log("tempState")
setTempState(!tempState)
}, 1000)
}, [])
return (
<>
<MemoComponent message={memoMessage}/>
</>
)
}
export default App;
|
cs |
위처럼 테스트 코드를 작성해보면, App이 켜지고 1초 후에 tempState는 변경하지만 MemoComponent에 있는 console.log();는 실행되지 않고(Rendering이 되지 않았다는 뜻) 3초 후에는 console.log()가 발동된다.
위처럼 불필요한 Rendering을 줄일 수 있다.
'ReactJS > Information' 카테고리의 다른 글
[React.js] React Query(useQuery, useMutation) (0) | 2021.12.14 |
---|---|
[React.js] createPortal 사용하여 DOM을 원하는 요소 안으로 옮기 (0) | 2021.12.11 |
[React.js] Hook 정리 (0) | 2021.12.11 |
[React.js] Redux & Reducer (0) | 2021.12.09 |
[React.js] Re rendering 조건 (0) | 2021.12.09 |