
10주차 과제
기본과제 pass😃 (심지어 우수를 받았다!!)
심화과제 pass😃 (심지어 우수를 받았다!!)
측정방법 : LCP, INP, CLS
코드 수준에서 최적화 방법
devDevpendencies는 개발할때 사용하는것만 넣자!
router기준으로 code split할수있지만 component기준으로도 가능하다 (버튼 누를때 새로운 js파일 요청됨)
성능 측정 도구 --> third party도 가능
"build:analyze": "webpack --mode production --env analyze" 이걸로 bundle.js얼마나 줄어들었는지 확인 가능script head에 넣게될때 vs body에 넣게될때 성능차이
Function: name: functon.name -> 함수이름
useMemo나 useCallback의 의존성이 객체 state일때 setState({...state}) 를 하게되면 항상 새로운 객체가 만들어지기 때문에 메모이제이션이 의미가 없어진다
setSchedulesMap({
...schedulesMap,
[tableId]: schedulesMap[tableId].map((targetSchedule, targetIndex) => {
if (targetIndex !== Number(index)) {
return { ...targetSchedule } //새로운 객체가 만들어짐
}
return {
...targetSchedule,
day: DAY_LABELS[nowDayIndex + moveDayIndex],
range: targetSchedule.range.map(time => time + moveTimeIndex),
}
})
})
};
//개선
setSchedulesMap((prev) => ({
...prev,
[tableId]: prev[tableId].map((targetSchedule, targetIndex) => {
if (targetIndex !== Number(index)) {
return targetSchedule; // 기존 참조 유지
}
return {
...targetSchedule,
day: DAY_LABELS[nowDayIndex + moveDayIndex],
range: targetSchedule.range.map(time => time + moveTimeIndex),
};
}),
}));