[위시리스트 개발 일지] - 드래그앤드롭 문제 해결 및 기능 개선
위시리스트 프로젝트, 드래그앤드롭 문제 해결 및 기능 개선!
오늘은 위시리스트 프로젝트에서 발생했던 드래그앤드롭 관련 문제들을 해결하고, 사용자 경험을 개선하기 위한 기능들을 구현했습니다.
🛠️ 오늘 구현 및 해결한 주요 내용
MainContent.js구문 오류 수정:'return' outside of function오류를 해결하기 위해MainContent.js파일 내return문의 위치를 수정하여 컴포넌트가 올바르게 JSX를 반환하도록 했습니다.
- Firebase Firestore 배치 쓰기 오류 해결:
_firebase__WEBPACK_IMPORTED_MODULE_1__.db.batch is not a function오류를 해결하기 위해MainContent.js에서firebase/firestore의writeBatch함수를 올바르게 import하고,db.batch()대신writeBatch(db)를 사용하도록 수정했습니다.
- 아이템 드래그앤드롭 문제 해결 및 대체 기능 구현:
@hello-pangea/dnd라이브러리를 사용한 아이템 드래그앤드롭 시 아이템이 마우스와 다르게 움직이는 문제를 해결하기 위해CategoryCard.js의handleAddItem함수에서item.id생성 시Date.now()와 함께 무작위 문자열을 추가하여draggableId의 고유성을 강화했습니다.- 드래그앤드롭 기능에 지속적인 문제가 발생하여, 아이템의 순서를 변경하는 “위로 이동” 및 “아래로 이동” 버튼을 추가하는 방식으로 기능을 대체했습니다.
ItemRow.js에서Draggable래퍼를 제거하고 “위로 이동”, “아래로 이동” 버튼을 추가했습니다.MainContent.js에handleMoveItemUp및handleMoveItemDown함수를 추가하여 로컬 상태와 Firestore의items배열을 업데이트하도록 구현했습니다.CategoryCard.js에서Droppable래퍼를 제거하고,MainContent.js에서 전달받은onMoveItemUp및onMoveItemDownprops를ItemRow.js로 전달했습니다.MainContent.js에서DragDropContext,Droppable,Draggableimport 및 사용을 제거했습니다.
- “Hobbies”를 “Interests”로 변경:
- UI에 표시되는 텍스트뿐만 아니라, 코드 내에서 “hobbies”라는 문자열을 사용하여 컬렉션 이름이나 상태 변수 등을 참조하는 모든 부분을 “interests”로 변경했습니다.
MainContent.js파일에서hobbies상태 변수 및 관련setHobbies호출을interests및setInterests로 변경했습니다.- Firestore 컬렉션 이름 “hobbies”를 “interests”로 변경했습니다.
- UI에 표시되는 “My Hobbies” 텍스트를 “My Interests”로 변경했습니다.
listType="hobbies"로 전달되는 모든 부분을listType="interests"로 변경했습니다.handleMoveItemUp및handleMoveItemDown함수 호출 시hobbies를interests로 변경했습니다.
🚀 다음 목표
오늘 구현된 기능들을 바탕으로, 애플리케이션의 안정성을 더욱 높이고 사용자 피드백을 반영하여 추가적인 개선을 진행할 예정입니다.
오늘도 많은 문제들을 해결하며 프로젝트가 한 단계 더 발전했습니다.