Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
구현 요약
미션, 디스커션 제출 로직을 리팩터링했습니다.
풀이
MissionSubmitPage
->useSubmitSolutionHandlers
-> 초깃값 설정 :useInitializeInputs
, 폼 제출 :useFormSubmission
디스커션
DiscussionSubmitPage
->useSubmitDiscussionHandlers
-> 초깃값 설정 :useInitializeInputs
, 폼 제출 :useFormSubmission
useCallback
을 활용하여 메모이제이션을 추가했습니다.handleFormSubmit
의 재생성으로 인해 자식 컴포넌트가 리렌더링되는 것을 방지했습니다.setInitialInputValues
의 재생성으로 인해useEffect
의 의존성 배열이 새롭게 변경되는 것을 방지했습니다.어려웠던 점
useFormSubmission
에서patchMutation
props를 받아 실행을 시켜야 했는데, Mutation 핸들러에 전달해야 하는 인자가 모두 달랐습니다. 따라서 확장성을 위해id
값만 필수적으로 받은 뒤, 나머지 props는 제네릭을 활용하여 외부에서 주입하는 것으로 구현했습니다.외부에서 주입하는 경우 아래와 같이 사용 가능합니다.
연관 이슈
참고
코드 리뷰에
RCA 룰
을 적용할 시 참고해주세요.