1차 프로젝트가 끝났고 화끈하게 뒷풀이도 했습니다. 짧다면 짧은 2주지만 시간에 비례하지 않게 저에게 많은 경험을 남겨준 1차 프로젝트를 마무리하며 회고록을 남겨보려고 합니다.
국내외 패션, 라이프 스타일을 한눈에 볼 수 있는 유명 온라인 편집샵 29CM 웹사이트를 클론하는 프로젝트 입니다.
협업툴
저는 프로젝트에서 29CM만의 자체 브랜드 홍보 SNS페이지인 29TV와 상품 및 컨텐츠의 찜목록 페이지인 My Heart를 맡았습니다. 인스타그램 클론 코딩에서 구현했던 Modal 기능의 심화된 버전을 구현할 수 있었고 My Heart페이지와 공통 컴포넌트를 사용하면서 State관리를 효율적으로 하는 방법에 대해 탐구해볼 수 있었습니다.
아쉬운 점🧐
해결/개선 방법
경험해보지 못한 기능들은 동기들로부터 간접 경험을 할 수 있었고 100% 체득하진 못했지만 어느정도 살펴볼 수 있었습니다. 이를 기반으로 나중에 꼭 혼자 해봐야겠다고 다짐을 해봅니다..🤓
공식문서를 꼼꼼히 봐야겠다고 생각했습니다. 어떤 기능에 대해 서치할 때 마음이 앞서 이것 저것 겉핥기식으로 훑어보는 경우가 잦았는데, 결과적으로는 공식문서를 꼼꼼히 살펴보면 군더더기 없는 정보를 얻을 수 있었습니다. 물론 다른 훌륭한 분들의 여러 블로그를 참고하여 보면 좋지만 필터링이 약한 저에게는 공식문서를 가까이 해야할 필요성이 있음을 느꼈습니다.
이중 모달창 기능 구현은 여기서 확인!
Active Tab 기능 구현은 여기서 확인!
State 끌어올리기는 여기서 확인!
부모/자식 컴포넌트의 State관리는 여기서 확인!
그밖에 기억하고 싶은 코드로는 props 타입을 지정하여 타입에 따라 같은 컴포넌트에 다른 데이터를 fetch하는 함수입니다.
29TV와 My Heart페이지에서 TV카테고리 부분은 같은 컴포넌트를 공유하고 있습니다. 때문에 컴포넌트를 재사용 할 수 있는데 문제는 두 페이지에서 보내는 데이터가 다르다는 점이였습니다. 이를 해결하기 위해 공통된 컴포넌트에서 받아와야하는 두 데이터 fetch를 함수로 정하여서 componenetDidMount에서 조건문을 이용하였습니다. 다시 데이터가 불려지는 순서를 순차적으로 살펴보면
<Route
exact
path="/TwentyNineTV"
render={() => <TwentyNineTV type="total" />}
/>
//29TV
getTwentyNineTVData = () => {
fetch(`${API_URL}/media/recommend`, {
method: "GET",
headers: {
Authorization: localStorage.getItem("token"),
},
})
.then((res) => res.json())
.then((res) => {
this.setState({
data: res.data,
});
});
};
//MyHeart
getMyHeartData = () => {
fetch(`${API_URL}/mypage/heart/post`, {
method: "GET",
headers: {
Authorization: localStorage.getItem("token"),
},
})
.then((res) => res.json())
.then((res) =>
this.setState({
data: res.my_heart_list,
})
);
};
componentDidMount = () => {
this.props.type === "total"
? this.getTwentyNineTVData()
: this.getMyHeartData();
};
결과적으로 라우팅 될 때 타입에 따라서 해당하는 데이터를 호출하게 되므로 동일한 컴포넌트에 다른 데이터를 입력해 사용할 수 있다.
거의 마지막에 고생했던 부분인데 생각보다 로직이 간단했고 제가 너무 문제를 복잡하게 생각한다는 것을 깨달았습니다...종택님의 도움으로 해결할 수 있었고 무한한 감사의 인사를 드립니다...🙏
중간중간 간략하게 언급했던 느낀점을 글을 마무리하며 다시 한 번 정리하고자 합니다.
블로그로 정리하는 회고록으로는 이 글이 두번째입니다.
회고록을 쓰는 두번째의 소감으로는...스스로 새삼스럽기도 하면서 너무나 빠르게 지나간 순간들과 제가 겪은 경험, 배움에 대해서 곱씹어 보게 되는 시간이 참 중요하다는 것을 느낍니다.
뜬금 없지만 '남는건 사진이다', '먹는게 남는거다'와 같이 항상 뭔가를 남겨야지 득이 되는 것 같은 말들이 떠오릅니다. 그리고 그 말들이 정말 맞는 것 같습니다. 과거에 저는 뭔가를 기록하는 일에서 점점 멀어져서 많은 나날들을 스치듯 잊으며 지나쳤고 그게 현대인의 삶이고 나도 적응했구나 하며 당연하게 지내왔습니다. 목적이 있는 기록일지라도 지금 저는 점점 과거의 저와 다른 사람이 되어가고있고 변해가는 제 모습이 마음에 듭니다.ㅎㅎ..
1차 프로젝트를 하면서 코딩 뿐만이 아니라 정말 많은 것에 대해서 배웠습니다.
그리고 그 경험 가운데에는 동기들과 멘토님들이 있었습니다. 혼자서는 배울 수 없다는 것을 다시금 느끼며...2차 때는 더 나은 사람이 되도록 노력하겠습니다🥰
👍👍👍👍👍