취업을 위한 정권찌르기 오늘도 역시나..
프로젝트 코드 리팩토링
오류를 고치기 위해 덕지덕지 쓴 코드를 보면서 과거의 나를 혼내고 싶었다 ㅠ
문제 원인은 배열안의 객체가 생성 될 때 마다 idx 값을 부여하였는데
idx 4번 값을 삭제하게되면
사진과 같은 상태가 된다.
사실 key값과 index 값이 안 맞는것도 거슬렸고,idx 값에 의존해서 터치이벤트와 스크롤 이벤트가 실행되도록 뷰어 페이지에 코드를 작성하였기에 idx 값을 변경할 필요가 있었다.
그래서 당시 삭제, 미리보기, 발행하기, 텍스트 등록하기를 실행 할 경우 재배치 함수가 작동하도록 코드를 작성하였는데...
const relocationHandler = () => {
if (contents[contents.length - 1]?.idx != contents.length) {
// console.log("여기 안들어온건가");
contents.map((content, index) => {
reLocation.push({
idx: index + 1,
context: content.context,
event: content.event,
});
});
setEpisode({ ...episode, contents: reLocation });
}
};
위와 같은 방식으로 작성하였다.
저 코드도 useState는 불변성을 유지하기 위해 push 함수를 사용하면 안되는데 push를 사용해서 배열 자체를 직접 바꿔버려 많은 잘못들이 엮여 있는 코드이다..........
위의 문제점을 해결하기 위해서 2가지의 방법을 생각하였다.
그대로 넘어갈 경우 뷰어에서 idx값에 의존한 반복문을 돌릴 때 없는 숫자가 나올 시 넘기는 코드를 추가로 작성하는 방법
팀원이 주신 아이디어인데 근본적인 해결 방법은 아니지만 프로젝트 당시에 사용했다면 기존 방법보다는 코드를 적게 작성하고 오류가 적었을 것이라 생각한다!
하지만 문제의 완전한 해결책이 된다고 생각되진 않아 채택하진 않았다.
퍼포먼스 점수가 8점이나 올랐다!
상세 내용을 살펴보니 기존의 long main thread task가 6개 있었는데 2개로 줄여서 점수가 올라 간 것으로 확인 된다!
기분이 너무 좋다..! 얼른 다른 부분도 리팩토링해서 사이트 성능을 올리고 싶다!!!!!