티스토리 뷰
프리온보딩 프론트앤드 코스 2기 TIL
4주 차 여덟 번째 과제(22.02.24 ~22.02.26) TIL
YG - 96년생 , 강아지 있음, 개발자 희망 2022. 3. 2. 14:44프리온 보딩에서는 과제마다 각 기업이 요구하는 기술을 바탕으로 과제를 진행하는 방식입니다.
여덟 번째 데이터 목록 페이지 만들기
파일의 목록과 파일의 상세 데이터를 표시하는 페이지를 만들었습니다.
배포 깃 허브 링크
https://github.com/Gilpop8663/08_link_data
GitHub - Gilpop8663/08_link_data: 원티드 프론트앤드 프리온보딩 2기 14팀 정보를 담는 리스트 페이지 프
원티드 프론트앤드 프리온보딩 2기 14팀 정보를 담는 리스트 페이지 프로젝트입니다. Contribute to Gilpop8663/08_link_data development by creating an account on GitHub.
github.com
기능 구현 (맡았던 부분)
Axios를 통해 데이터를 가져왔습니다.
- axios를 통해 제공된 api가 아닌 json-server를 이용해서 유효기간 날짜만 변경된 데이터를 받아와 화면에 표시했습니다. 그 이유는 api의 날짜 데이터가 22년 1월로 나와있어서 좀 더 다양하게 기능을 테스트해 볼 수 있는 최신 날짜로 갱신하였습니다.
중복하여 데이터를 가져오는 것을 지양했습니다.
- react-router-dom의 useMatch, useLocation을 이용해서 처음에 fetch 받은 데이터를 상세 페이지로 넘겼습니다.
유효기간 만료 여부를 데이터마다 알아냈습니다.
- new Date() 메서드를 사용하여 현재 시간과 api에서 받아온 데이터의 시간을 비교하여 유효기간 만료 여부를 알아냅니다.
유효 기간에 따라 화면 구성을 달리했습니다.
- 유효기간 만료 여부에 따라 화면의 구성이 바뀔 수 있도록 조건문을 통해 구현했습니다.
다양한 메서드를 활용하여 구현하였습니다.
- 날짜, 파일 크기와 같은 데이터는 인스턴스 메서드 등 다양한 메서드를 활용하여 화면과 같이 텍스트가 출력될 수 있도록 구현했습니다.
유효기간을 실시간으로 반영되게 구현하였습니다.
- 유효기간을 setTimeout을 통해 (60초 - 현재 시간의 초)의 계산을 하여 (60초 - 현재 시간의 초) 후에 리 렌더를 하고 setInterval을 통해 15초마다 리 렌더 되도록 하였습니다.
URL을 클릭한 경우 클립보드 복사 기능을 구현하였습니다.
- url 링크를 navigator.clipboard.writeText() 메서드를 활용하여 클립보드에 저장할 수 있도록 구현했습니다.
파일의 섬네일 이미지를 표현했습니다.
- api 데이터 값 중 svg 파일이 아니라면 섬네일 이미지를 보여주고 그게 아니라면 default 이미지를 보여주도록 하였습니다. svg 파일이라면 파일이 제대로 나오지 않는 이슈가 있었기 때문입니다.
정리 및 회고
새로 알게 된 점
- 클립보드 하는 방법에 대해 새로 알게 되었습니다.
- Acees-Control-Allow-Origin 관련해서 설정이 없었을 때 CORS 정책 위반 경고를 해결하기 위해 proxy 서버를 지정해서 해결하는 방법을 알게 되었습니다.
힘들었던 점 / 해결과 극복 방법
- api 값에서 섬네일 이미지를 불러와 표시해야하는 것이 있었는 데 svg 파일만 이미지가 제대로 나오지 않아서 api값의 확장자가 svg 일 때 default 이미지를 사용하고 나머지 확장자일 때 섬네일 이미지를 표시하도록 해결했습니다.
- api 값의 유효기간 데이터가 처음에 new Date 로 넣었을 때 1970년대로 나와서 기업에서 1초로 주신 것으로 생각하고 1000ms로 변환하였고 2022년 1월로 이미 지난 기간으로 나와서 임의대로 기능 구현에 다양한 내용을 화면에 표시하기 위해 json-server에 기존 api 데이터와 유효기간 데이터를 새로 넣어서 페이지를 구현하였습니다.
- 유효기간이 표시되는 것을 실시간 시간으로 1분이 지나면 페이지에서도 1분이 지나도록 하였는데 setInterver 로 60초 초마다 하니 실시간으로는 제대로 작동이 되지 않아서 setTimeout에서 60초 - 현재 초를 하고 난 뒤 데이터가 패치되도록 하였고 setInterval로 15초마다 패치되도록 하여 해결했습니다.
'프리온보딩 프론트앤드 코스 2기 TIL' 카테고리의 다른 글
4주 차 여덟 번째 수업 TIL (0) | 2022.03.01 |
---|---|
4주 차 일곱 번째 과제(22.02.21 ~ 22.02.23) TIL (0) | 2022.02.23 |
4주 차 일곱 번째 수업 TIL (0) | 2022.02.23 |
3주 차 여섯 번째 과제(22.02.17 ~ 22.02.19) TIL (0) | 2022.02.23 |
3주 차 여섯 번째 수업 TIL (0) | 2022.02.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nextjs
- Storybook
- 북클럽
- 아차산
- jest
- electron
- 스토리 북
- 위코드
- 노개북
- 초보
- createPortal
- TopLayer
- WSL2
- React
- C언어
- nodejs
- import/order
- error
- 프론트앤드
- 우아한테크코스
- 노마드코더
- CLASS
- 윤성우 열혈C프로그래밍
- 원티드
- NextRequest
- javascript
- NextApiRequest
- env
- 프리온보딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함