2022 클론코딩 대회 웹2조 입니다! 대회 제출 양식에 해당하는 README는 맨 아래 작성하였습니다!!
대회 진행: 2022년 8월 17일(수) ~ 21일(일), 총 5일
Language : Workframe: React
제공받은 api를 활용해 네이버 블로그 화면을 구현해보았습니다.
- 블로그 메인 화면 구현
- 블로그 댓글 화면 구현 (선택)
- 버튼 클릭 기능(단순히 도형 그려넣기X)이 확인되어야 하지만, 눌렀을 때 다른 화면으로 넘어가는 작업은 구현하지 않아도 됨
- 아이콘: 완전히 똑같은 모양 아니어도 됨
- 폭(너비, 가로) 길이는 아이폰 13 규격으로 진행
- 직접 네이버 블로그 앱에서 컴포넌트 작동 방식/디자인 고민
It requires Node.js to run.
Change directory to the project directory, and start the server :
npm install --global yarn
npm install axios
npm install
yarn start
Open http://localhost:3000 to view it in your browser.
if already port-3000 is using, just kill the server and retry it :
npx kill-port 3000
yarn start
- 설명: 모든 컴포넌트를 차곡차곡 올릴 템플릿. 하얀색 박스. 아이폰 13 규격에 맞춰 사이즈 제단
- 설명: map을 사용하여 banner api를 불러오고 렌더링.
- 설명: 개별 포스트들을 모아둔 배열을 map을 사용하여 포스트를 렌더링
- context: 뷰 방식 클릭 유무 상태
- 기능: 뷰 방식 하나 클릭하면 진한 회색으로 변하기
- 설명: api에서 Posts 정보 받아다가 출력.
- context: 커서가 pointer로 변하는 부분들 클릭 유무 상태
- 기능: 커서가 pointer로 변하는 부분은 모두 클릭했을 때 콘솔창에 클릭했다고 뜨게 하기
- 문제 상황: 폰트 사이즈가 10px 미만으로 내려가지 않음.
- 원인: 구글 설정>모양>글꼴맞춤설정>최소글꼴크기 옵션이 디폴트 10px로 맞춰져 있어서.
- 해결: 해당 코드 참조.
font-size:10px;
-webkit-transform:scale(0.5); //0.5 -> 50%
display: inline-block;
img 폴더 위치를 naverblog_clonecoding -> public으로 변경
- 클릭 상태를 관리하기 위해서 context 파일 추가함!
- 만들다가 실패해서, 대신 버튼 클릭하면 콘솔창에 어떤 버튼이 눌렸는지 뜨도록 함.
BlogTemplate.js에서 코드 고쳐도 계속 오류가 뜨길래 똑같은 내용 복붙해서 BlogTemplate2.js를 만들었음.
- 배경은 잘 넣었고, 대신 비율 조정 해야 함. 일단 배치 조정하기 전에 풀리케 보냄!
- Banner, BannerFrame 사용안하고 그냥 Banner2에 api까지 같이 넣어버림.
<전체 코드 공통사항>
- styled-components 라이브러리를 사용하여 css in js 방식으로 스타일링 함.
- 모든 컴포넌트를 올릴 레이아웃.
- api에서 banner 정보를 불러와 렌더링.
- 데이터 로딩 과정을 비동기로 만들기 위해 async/await 구문 사용.
- useState를 사용해 로딩 중 에러 사항, 로딩 진행 상황, 요청 결과 상태를 관리함.
- useEffect 훅을 사용하여 변화가 있을 때마다 렌더링하도록 함.
- onClick 이벤트를 사용하여 배너 위 특정 버튼이 눌렸을 때 콘솔창에 어떤 버튼이 눌렸는지 안내하도록 함.
- api에서 posts 정보를 불러와 렌더링.
- 기타 api에 관한 사항은 Banner2.js와 동일.
- api에서 받아온 postId를 key로 사용하여 map을 이용해 Post 컴포넌트에게 props를 넘겨주었다.
- 미리 저장해둔 썸네일 이미지를 postId에 따라 다르게 불러와 렌더링함.(api에 썸네일 정보가 없었음)
- PostList로 부터 받아온 props를 바탕으로 포스트 렌더링.
- onClick 이벤트를 사용하여 포스트 위 특정 버튼이 눌리면 콘솔창에 어떤 버튼이 눌렸는지 안내하도록 함.
- 예시로 주어진 화면의 컴포넌트 크기를 추출해 가능한 유사한 사이즈와 배치로 정밀하게 만들었다.
- 스터디에서 공부했던 내용을 최대한 활용할 수 있도록 고민했다.
- 웹타이틀(Naver Blog)과 favicon을 추가하여 실제와 같이 만들었다.
- 간식을 더 많이 줬으면 좋겠다.
- 하루 동안 빡세게 진행하는 것도 좋을거 같다.