일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JS예제
- CSS
- Til
- useState
- 부트캠프 #개발일지 #TIL #Position #위치
- 템플릿스트링
- React
- 깃허브오류
- textContent
- 의사클래스
- 부트캠프 #CSS #개발일지 #TIL #박스모델
- 부트캠프 #CSS #개발일지 #TIL
- 개발일지
- 부트캠프 #코딩 #개발일지 #프론트엔드 #CSS #TIL
- 부트캠프
- appendChild
- 부트캠프 #스파르타코딩클럽 #개발일지# #TIL #Javascript #confirm #location.href
- 부트캠프 #스파르타코딩클럽 #개발일지# #html
- js
- 결합선택자
- 부트캠프 #개발일지 #TIL #그리드 #CSS
- 리액트
- ㅜㄹㄹ
- 특성선택자
- querySelector
- 부트캠프 #개발일지 #TIL #CSS속성 #float #clear
- 개발일지 #TIL #프론트엔드 #HTML
- 부트캠프 #개발일지 #TIL #FlexboxFroggy #displayflex #flexbox
- useEffect
- 알고리즘
- Today
- Total
나의 개발일지
[React] 리액트 숙련주차 개인과제 (FanLetter 만들기 - 에러 발생 및 해결) 본문
🔥 React 숙련주차 개인과제 🔥
✔️ 구현해야 할 기능
· 팬레터 CRUD 구현 (작성, 조회, 수정, 삭제)
· 아티스트별 게시물 조회 기능 구현 (Home - Read)
· 원하는 아티스트에게 팬레터 등록 구현 (Home - Create)
· 팬레터 상세 화면 구현 (Detail - Read)
· 상세화면에서 팬레터 내용 수정 구현 (Detail - Update)
· 상세화면에서 팬레터 삭제 구현 (Detail - Delete)
✔️ 과제는 Props Drilling → Context API → Redux 순으로 각각 별도의 브랜치를 만들어 제출해야 한다.
💡Hint (과제 진행 순서)
(1) 프로젝트 셋업
(2) “props-drilling” 브랜치 생성 및 이동
(3) Router 셋업
4) 전역스타일링 적용
(5) 홈 화면 UI: 배너 및 헤더 파트 UI 구현
(6) 홈 화면 UI: Dummy Data(fakeData.json)를 이용한 리스트 UI 구현
(7) 팬레터 입력창(AddForm) 작성하여 팬레터 등록 기능 구현
(8) 홈화면의 팬레터 클릭 시 상세화면으로 이동 구현
(9) 상세화면 UI 구현
(10) 팬레터 삭제 기능 구현
(11) 팬레터 수정 기능 구현
(12) “context” 로 브랜치 생성 및 이동
(13) props drilling으로 불편하게 관리하던 state를 context api 로 리팩터링
(14) “redux” 로 브랜치 생성 및 이동
(15) context 로 관리중이던 모든 것을 redux 로 리팩토링
(16) 15단계까지 모두 완료하셨다면 선택구현사항들에 도전해보기
⛔ 에러 발생
: 값이 정의되지 않아 읽을 수 없을 때 발생한다
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
컴포넌트화가 조금은 되어있었지만 더 복잡해지기 전에
세분화를 하려다가 오류가 발생했다
map과 filter가 순회하려는 배열에서 자꾸 오류난다고 떴다
각 컴포넌트 파일에서 그 배열을 찍어보면 오류 없이 잘 나오는 것도 문제였다
어디서 꼬여버린지 찾기 힘들었다
❗해결과정
콘솔창에는 배열이 잘 나오니 아마 컴포넌트 문제라고 생각하고
하나하나 꼼꼼히 찾아보았다
우선 나의 파일 구성은 아래와 같다
App.js
↓
Home.jsx
Detail.jsx
↓
componets 폴더 안에 여러 컴포넌트들
부모 컴포넌트인 Home.jsx에서 자식 컴포넌트 LetterBox.jsx에 props를 해주었는데
형제 컴포넌트 Form.jsx에서도 LetterBox.jsx에 props를 해주니까
자식 컴포넌트에서 에러가 난 것이다. 한 번에 두개를 받으니 에러가 날 수 밖에!
그래서 Form.jsx에서 내려주어야 할 정보들을 Home.jsx에 다 옮겨놓고 각각 props를 해주어서
오류를 해결했다
⭐리마인드
컴포넌트 해야 할 부분을 미리 구성하고 시작하는 것은 엄청 중요하다
🔗컴포넌트 구성 참고사이트
https://ko.react.dev/learn/thinking-in-react