그 누구라도 이 프로젝트의 결과물을 보면 껌뻑 죽을 수 밖에 없을 결과물일것이다
라는 각오를 담은 팀 네임 R.I.P.
Feed 페이지
신고하기 모달창
댓글 페이지
상품 상세 페이지
React Native 프로젝트가 끝이 났다. 이번 프로젝트도 1차 때처럼 많은 두려움으로 시작했던 프로젝트였다. 원래 위코드 2차 프로젝트때는 정큐 커리큘럼상 그 전처럼 React 로 진행을 해야 한다. 그리고 멘토님들도 React Native 로 2차 프로젝트를 진행 하려는 사람들에게 이런 말들을 하셨기에 겁이 났다.
React, React Native 둘 다 놓칠 수 있습니다.
RN은 버그가 자주 발생하며 검색해도 자료가 현저히 부족합니다.
최소한의 가이드만 제공됩니다.
하지만 새로운 기술 스택에 대한 호기심도 컸었고, 공부해야 하는 내용이 어렵지 않으면 오히려 흥미를 잃어버리는 이상한(?) 마인드도 생겼기에 두렵지만, 또 설레는 마음으로 프로젝트를 시작했다.
웹과 어플리케이션의 차이점이 뭐라고 생각하나요?
위 질문에 대해 답을 하라고 하면, 나는 스택이라고 답을 할 것이다.
지금까지 다뤄왔던 기술들 ( HTML, CSS, JS, React ) 은 전부 웹 기반이었기에, 사용자가 새로 이동한 링크의 URL 이 블라우저 히스토리 스택에 푸시가 되고, 그 전 페이지로는 pop 을 이용하여 돌아간다.
하지만 어플리케이션에서는 글로벌 히스토리 스택에 대한 내장된 기능이 없고, 이 때문에 나온 기능이 React Navigation 이다. 그래서 React Native 에서 초기 세팅을 한다는 것은 Navigation 설계를 한다는 것이다.
FRIP 어플의 특이한 점 중 하나가 유저의 토큰값이 존재하지 않으면 아래 화면처럼 가입/로그인 하라는 화면이 뜬다는 것이다.
그래서 우리는 유저의 토큰 값이 존재할때는 사용하는 화면들의 스택 , 그리고 로그인 하기 전의 스택 2가지로 아래와 같이 구분을 하였다.
모달창이 나타나는 걸 보면, 배경은 fade 의 효과로 뜨지만 신고하기 버튼이 담긴 모달창은 아래에서 위로 slide 하는 것을 알 수 있다. 이를 react-native-modal 라는 라이브러리를 사용하면 바로 구현이 가능하다. 실제로 적용도 해봤을 때 금방 끝나긴 했다.
하지만 처음부터 라이브러리를 사용하기 보단 React Native 공식 문서에 나온 Modal 로 내가 스스로 구현을 해보는 게 나에게 더 큰 이해를 주겠다는 생각을 했다.
이 Modal 을 구현하는 데 있어서 가장 애먹었던 포인트는 배경은 fade, 컨텐츠는 slide 로 온다는 점이었다. 그래서 처음에 했던 수많은 생각들 중 하나는 다음과 같은 구조를 생각해보기도 했다.
<Modal> //fade 배경용 Modal
<Modal>신고하기</Modal> //신고하기 버튼이 담긴 Modal
</Modal>
하지만 이렇게 하면 화면은 화면이 뜨기는 커녕 수 많은 에러 코드로 화면이 뒤덮이기에 틀린 생각임을 바로 알 수 있었다.
그래서 결국 생각한 방법은 하나의 컴포넌트를 위에 또 다른 를 띄우는 식이다. 그리고 배경을 transparent
를 사용하는 것이었다.
이번 프로젝트때 새로운 기술 스택을 배울 때 내가 어떻게 대응하는 지, 그리고 그 대응 자세를 어떻게 고쳐나갈지에 대한 것들을 정말 뼈저리게 느꼈다.
일단 내 스스로에게 칭찬 해주고 싶은 부분은 React Native 라는 새로운 기술 스택을 접하는 대담함을 발휘하고, 이로 인해 익숙했던 기술에 대해 다른 관점을 가지게 되었다는 것이다. React Native 를 하면서 그 동안 웹기반의 기술을 사용하며, 당연시하며 누리던 것들이 사실은 당연한 것들이 아니라는 것을 느끼고, 내가 썼던 코드들이나 사용했던 기능들에 대해 다시 한번 생각해보는 계기가 되었다.
아쉬웠던 점은 대담함을 좀 더 발휘했으면 어떠했을 까 라는 생각을 해본다. 프로젝트 사전 회의 때, 나는 피드 페이지를 주력으로 만들고 싶다고 했다. 개인적으로 이번 프로젝트의 주 목적은 새로운 기술 스택을 온전히 나의 것으로 만들어보자는 것이었기 때문이다. 그래서
쉬운 기능은 다뤄보자!
라는 마인드였다. 하지만 이는 내 오판이었다. 새로운 기술 스택에 대한 두려움이, 1차때 배웠던 어려운 것을 도전해보자!
마인드를 너무 위축시켰다. React Native 는 결국 React 기반이라 익숙해지고 나면 결국 React 와 많이 비슷하다라는 느낌을 받았다. React Native 가 익숙해지고 난 뒤 그 후에 하는 작업들은 해 봤던 기능들을 다시 하는 작업들이었고, 이는 어렵지 않으면 재미가 없다
라는 내 마인드가 발동되버리는 계기가 되었다.
라는 말이다. 나는 러닝 커브가 높은 사람이니, 겁 먹지 않아도 된다는 말을 해주고 싶다.