[React] 디자인시스템 FOCUS 챌린지 - Numble
7일부터 넘블 프로젝트가 시작됬다.
오늘부터 시작
이전에 next.js로 class101 디자인 컴포넌트를 설치했었으나, 새로 열린 챌린지 가이드 라인 페이지에는 따로 next.js언급이 없어 그냥 리액트로 진행하기로 했다.
(next.js가 버그가 많아 ㅠ 기간을 못맞출까봐 걱정된 부분이 크다)
오늘 할 일은 class101 디자인 컴포넌트 설치, 타입스크립트 설치 정도 해보려고 한다
github 레포지토리를 만들었다
https://github.com/ezh29/study_numble_class101
레포지토리는 개인 계정이고, 회사에서 작업한건 회사 계정으로 푸시해야해서 레포지토리에 회사계정을 추가했다.
(아직 윈도우에 등록된 깃 계정을 왔다갔다 하는건 미흡하다 ㅠ 회사 깃허브에까지 꼬이느니 그냥 내 개인 프로젝트에 회사계정을 추가할래 ㅠㅠ..)
npx create-react-app . --template typescript
기존 리액트 프로젝트에서 typescript를 적용하면 조금 까다롭다고 한다.
어차피 처음부터 만드는 프로젝트이니까 typescript trmplate으로 설치했다.
npm install @class101/ui
설치 후 테스트로 button
넣고 npm start
해보니 잘 뜬다
(next.js랑은 다르게 오류가 안난다...)
넘블 측에서 데이터를 json으로 주었다.
파일로 진행할까 하다가 그래도 실무처럼 하고싶어서
json-server로 구성하기로 했다.
(카우치코딩 팀플에서 배운게 이렇게 쓰이네..)
파일트리 최상단에 data.json으로 json파일을 다 몰아넣었고
{
"top_event":[...
],
"bottom_event":[...
],
"time_deal":[...
],
"md_recommend":[...
],
"open_soon":[...
],
"popular_event":[...
],
}
임시로 app.js에서 불러와서 컴포넌트 만들기 시작했다
async function getData() {
const res = await axios.get("http://localhost:4000/time_deal");
setPostData(res.data);
}
console.log(postData);
컴포넌트들의 css 관리를 위해 emotion을 적용했다
json-server
로 time_deal
부분을 작업했다<Grid>
,<Row>
,<Section>
,<GridList>
를 사용했다interface
로 설정하여 받아내는 것까지는 하였다. 하지만 useState<any[]>([]);
...any... 말로만 듣던 애니빌런이 쓰였다. 추후 고칠 수 있다면 고쳐야겠다.height:0; padding-botton:**%
으로 세로 비율을 맞추는 방법이 있었다.padding-top
으로 했을 뿐 같은 방식이였다padding-top: 75%; height:0;overflow: hidden;
top: 0px;left: 0px;width: 100%;height: 100%;position: absolute;
미래애서 온 해답
class101내부에 icon도 있었다미래에서 온 해답
컴포넌트는 쪼갤수 있는만큼은 쪼개는게 좋은 것 같다