해결된 질문
작성
·
209
0
감정 일기 프로젝트에서 "Edit 페이지 구현하기"까지 공부한 상황입니다. 구현하고 나서 강사님 설명대로 동작 시켜 보니 잘 동작하더군요. 그런데 제가 이것 저것 동작을 체크하면서 방금 생성한 일기를 다시 수정하고 나서 작성완료 버튼을 눌렀더니, Diary list에 방금 수정한 목록이 두 개가 나타나고, 이전 달의 Diary list가 사라지는 현상이 발생하였습니다. 그래서 제가 어느 부분을 잘못 코딩하였는지 확인하고자 강사님이 제공한 Git 사이트의 코드와 제가 작성한 코드를 일일이 비교해 보았지만 차이점을 발견하지 못하였습니다. 강사님은 이런 현상이 발생하지 않았는지요? 또한 어떻게 이 문제를 해결할 수 있을까요?
답변 2
0
안녕하세요 이정환입니다.
뭔가 직접 만드신 프로젝트의 어딘가에 오류가 있는것 같아요, 데모 프로젝트에서는 동일한 오류가 발생하지 않습니다,
데모 프로젝트 링크 : https://emotion-diary.winterlood.com/
혹시 새롭게 생성되는 일기 아이템의 id 값이 기존에 존재하는 데이터와 중복되지는 않는가요? 해당 부분 확인해 보시면 뭔가 실마리가 잡힐 것 같기도 합니다.
테스트 해보시기 어렵다면 로컬스토리지에 저장된 데이터를 모두 삭제한 다음 다시 수행해보세요 그럼에도 문제가 발생한다면 질문 가이드라인에 올려드린대로 전체 프로젝트 코드를 깃허브 또는 구글드라이브 링크를 통해 전달주시면 살펴보겠습니다 😃
안녕하세요 이정환입니다.
제 강의에서는 월 별로 일기가 나누어 렌더링 되고 있어서 임시 데이터 활용 중에도 버그가 발생하지 않고 있는것 같아요, 그리고 이후의 과정에서는 목 데이터를 제거 하기 때문에 또 문제가 발생하지 않게 되구요
이 부분은 제 디테일이 조금 부족했네요 ㅠㅠ 시간이 될 때 헷갈리시지 않도록 변경 해 두겠습니다. 지금은 idRef의 값을 4로 변경하시어 작업하시는걸 추천드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. 똘돌이님. 감정 일기 프로젝트에서의 문제 상황을 겪고 계시군요! 동일한 문제를 해결하려는 다른 수강생들의 케이스를 찾아 해당 답변들을 공유드립니다.
수정 시 일기가 삭제됩니다.
강사님이 제시한 해결책 중 하나는 src/App.js
내의 코드에서 오타가 있을 가능성을 지적하는 것입니다. ...action.date
가 아닌 ...action.data
로 수정할 필요가 있다고 했습니다. 실제로 action 데이터 구조를 잘못 참고하는 경우 마치 같은 목록이 반복되거나 수정 전 데이터가 사라지는 오류가 발생할 수 있습니다.
새 일기 등록이 안됩니다..(Uncaught TypeError: Cannot read properties of undefined (reading ‘date’))
이 답변에서는 ‘onCreate’ 함수 내에서 date
대신 data
라는 변수명을 사용하는 오타 문제를 지적하며, 이는 데이터 처리 과정에서 혼란을 야기할 수 있는 중요한 부분입니다.
데이터축적하기에서 못넘어가고 있어요….
질문에 대한 해결책으로, 유효성 검사나 기타 조치가 전혀 동작하지 않는 것을 막는 디버깅 방법을 제안합니다.
위 링크들을 참고하시면서, 앱의 상태 관리 및 데이터베이스 갱신 부분을 아래와 같은 방법으로 검토해보세요:
- dispatch
함수가 올바르게 호출되고 있는지 확인하세요. 특히 ‘EDIT’ 액션이 호출되는 부분의 로직을 점검하세요.
- 데이터의 배열 조작 시 불필요한 아이템이 추가되거나 삭제되지 않는지 확인하세요. functools.reduce 같은 메소드나 filter, map 사용에 주의하세요.
- 상태가 업데이트될 때, setState
가 비동기로 작동하기 때문에 업데이트가 올바르게 반영되지 않을 수 있습니다. useEffect
등을 사용하여 상태 변화를 감지하고 처리 방식을 검토해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
혹시 오타의 가능성이 있을까 해서, 강사님의 코드와 제 코드를 Diffchecker로 확인한 결과 오타는 없었습니다. 현재는 수업을 따라가고 있는 상황이라 제가 별도로 코드를 작성하지 않고 수업 진행에 맞춰 수업 내용과 일치하는 코딩을 하고 있는 상황입니다.
강사님 조언을 참고하여 코드를 실행하며 key 값(DiaryList.jsx에서 아래 코드 부분)을 살펴 보았더니 일기를 새로 생성할 때 키 값이 3으로 중복 할당되더군요.
키 값이 3으로 중복 할당 되는 이유는 다음과 같이 App.jsx에서 초기 값을 3으로 설정하였기 때문입니다. 그래서 const idRef = useRef(3)을 useRef(4)로 바꾸었더니 오류가 없이 잘 동작하였습니다. 아래 코드에서와 같이 onCreate에서 id: idRef.current++ 부분에서 초기 설정값(3)을 id에 할당하고 나서 증가 연산(++)이 일어나기 때문에 id 값(결국 키 값)이 3으로 중복 할당 된 것이라 판단되네요. 초기 값을 4로 변경하고 나서 더 이상 문제가 발생하지 않았습니다만, 궁금한 것이 어떻게 강사님은 이 부분에서 오류가 발생하지 않은 것 일까요? 다시 한 번 강사님의 Git hub의 코드를 살펴보니 강사님 코드는 useRef(3)으로 설정되어 있더군요.