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 Component
- NPM
- 클래스컴포넌트
- sequelize
- 시퀄라이즈공부
- express-generator
- 리액트스타디
- NoSQL
- React
- 리액트기초
- 제로초예제
- 리액트컴포넌트
- nodejs교과서
- mongoose
- node
- nodeJS
- 리액트
- npm명령어
- mongo
- MongoDB
- component
- sementicversion
- 시퀄라이즈
Archives
- Today
- Total
개발노트
14. (4)context API 본문
최적화
context API 의 Provider 에 value를 넣어줄때 useMemo
useMemo를 안해주면 value가 바뀔때마다
Provider안에 있는 컴포넌트들이 다 리렌더링 되버림.
const tblContextValue = useMemo( ()=>({ tableData, dispatch , gameOver }) ,[tableData]);
<TableContext.Provider value={tblContextValue}>
<h3>지뢰찾기</h3>
<Form />
<Table />
<p>타이머:{timer}</p>
<p>결과:{result}</p>
</TableContext.Provider>
Form, Table, Tr, Td 하위컴포넌트의 경우 React.memo 사용
jsx의 useMemo
contextAPI를 쓰면 기본적으로
state가 바뀔때마다
useContext 를 쓴 함수컴포넌트가 한번리렌더링 된다
const Td = memo(({trIndex, tdIndex}) =>{
const{ tableData , dispatch , gameOver } = useContext(TableContext);
...
//이부분들이
}
const Td = memo(({trIndex, tdIndex}) =>{
const{ tableData , dispatch , gameOver } = useContext(TableContext);
...
// A
return(
//B
)
}
함수부분인 A에 비해 렌더링하는 B 부분은 최적화작업이 필요.
실제로 렌더링 되는 return안은 값을 캐싱하는 useMemo를 사용한다
const Td = memo(({trIndex, tdIndex}) =>{
const{ tableData , dispatch , gameOver } = useContext(TableContext);
...
// A
return useMemo( ()=>(
<td onClick={onClickTd} onContextMenu={onClick_RightTd} style={tdStyle(stateCode)}>
{tdText(stateCode)}
</td>
),[stateCode]);
}
+컴포넌트분리
const Td = memo(({trIndex, tdIndex}) =>{
...
return <TdStr onClickTd={onClickTd} onClick_RightTd={onClick_RightTd} stateCode={stateCode}/>;
});
const TdStr = memo(({onClickTd, onClick_RightTd, stateCode} )=>{
return(
<td onClick={onClickTd} onContextMenu={onClick_RightTd} style={tdStyle(stateCode)}>
{tdText(stateCode)}
</td>
)
});
'React > basic' 카테고리의 다른 글
14 (3)context API (0) | 2020.07.30 |
---|---|
14 (2)context API (0) | 2020.07.29 |
14. context API (0) | 2020.07.29 |
13. (3) useReducer (0) | 2020.07.29 |
13. (2) useReducer (0) | 2020.07.29 |