특히 API를 호출하고
.then()
,.finally()
로 처리할 때 둘을 혼동하면 제대로 데이터가 전달되지 않았다. 철지히.then()
이 완전히 실행되고 난 후에.finally()
가 실행되기 때문이다. 그 외에도 부모 컴포넌트의 state에 좌우되는 로직이 해당 state가 변화되기 전에 먼저 실행되면서 발생한 오류도 있었다.
이번에는 유난히 undefined 에러가 많았다. 데이터의 형식을 검증하는 코드가 있었는데 빌드시키면 그 부분에서 자주 에러가 발생했다. 왜냐하면 검증이 필요한 데이터가 처음 빌드할 때는 정의되어 있지 않았기 때문이다. 삼항연산자로 이미 있는 상태에서만 실행되도록 코드를 짠 후에야, 에러가 발생하지 않았다.
const hasNameValid = deductor.name? deductor.name.length >= 2 : false
체크박스를 통해 현재 입력한 데이터를 기본 데이터로 지정하는 로직이 있었다. 이를 어떻게 구현해야 할지 몰라서 각기 다른 API를 연달아 두 번 호출할 뻔 했다. 그러나 해당 페이지의 주요 기능은 기부영수증을 신청/수정하는 일이었고, 따라서 그 외의 작업은 파라미터 등 부차적인 요소로 빼서 전달하는 게 맞았다.
const receiptInfo = { deductor: deductor.name, residentRegistrationNumber: deductor.residentRegistrationNo1 + deductor.residentRegistrationNo2, donationId: donationId, // 파라미터 값으로 넘겨준 체크박스 값 isDefault: isChecked.defaultInfo };