dektop에 가서
sudo npm install --global expo-cli
태그는 안 쓰고 모두 컴포넌트로 사용한다.
display:flex
가 기본이다. 하지만 기본은 수직이니까 가로 정렬하려면 flex-column:row를 줘야 한다.
flex:1
height:100%과 같은 기능을 한다.
App.js가 엔트리 파일! 이름은 바꾸면 안 된다. 컴포넌트 단위니까 전부 가져와야한다.
이렇게 인풋창을 만든다.
expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view
요 친구를 다운 받아준다.
npm install @react-navigation/stack
얘도
(navigation에 대해 쓴 건 실수로 날려버려서 나중에 다시 써보자!)
요점만 정리하자면 page는 stack에 쌓이므로 push와 navigate 메서드를 잘 이용하자!
나는 기본적으로 달력과 지도를 너무 사랑한다. 달력과 지도는 해도 해도 계속 하고 싶다. 예전에 웹으로 투두를 만들었을 때 달력 기능을 꼭 넣고 싶었는데 이번에 한 번 넣어본다!!
일단 달력을 만들 component를 만든다.
일단 기본 구조다.
이렇게 라이브러리에서 필요하 메서드를 가져오고 getWeekDays
란 함수에서start
를 선언한다.
start
는 new Date()
로 생성한 date를 기준으로 그 주의 첫 번째(월요일)을 가져온다.
이제 for문을 돌려서 일주일을 생성하면 된다. addDays
메서드를 통해 생성된 date를 콘솔 찍어보면
이렇게 일주일이 생성된다.
이제 final
이란 배열에 넣으면 되는데 formatted, date, day
로 필요한 값을 각각 키로 만든다. final 배열을 콘솔 찍어보면
이제 final을 렌더해주면 된다!
useEffect
로 변화가 있을 때, 즉 날짜가 바뀌었을 때 업데이트가 되게 해준다.
state값으로 맵을 돌리면
짜잔 일주일이 등장했다.
먼저 isSameDay
라는 메서드를 이용해서 date
(new date의 인스턴스)와 weekDay.date
(배열 요소 중 하나)가 일치하는 친구가 있다면 style을 바꿔준다.
react-native-calendar라는 라이브러리를 사용할 것이다. 라이브러리 퀄리티가 무슨...
Agenda
컴포넌트에 각 들어가는 props다. items
는 state에서 관리하고 loadItems
라는 함수에서 기본적인 UI틀을 만든다.
라이브러리에서 끌어 왔다. 그래도 뭔지는 알고 써야하니까 하나씩 살펴보자.
for문에서 i의 조건으로 지정된 숫자가 어떤 의미인지 모르겠지만 일단 for문을 돌린다.
이때 time
과 strTime
를 생성하는데 time은 말그래도 밀리세컨드고 strTime은 timeToString
이란 함수로 변환된 값이다.
이렇게 각각 i만큼 찍어낸다. selectedDate를 오늘인 12월 15일로 지정해서 12월 05일이 i의 시작날이다.
loadItems
에 들어오는 day라는 인자를 콘솔로 찍어보면
이렇게 나온다. 그 어디에도 직접적으로 인자를 주는 곳이 없으니 return 부분에서 임의로 지정한 selected를 인자로 받는 것인지 확인해보겠다.
(아닌 것으로 밝혀짐)
이렇게 각 날짜에 items가 들어있다. 현재는 random number로 개수를 임의로 조정했고 나중에 투두가 들어갈 곳이다. 헷갈리기 시작한다..
이렇게 만들어진 item을 복제해 state로 관리한다.
새로운 props를 준다. renderDay가 생기면 왼편에 있던 날짜 bar가 사라진다. 왜 그러는지는 모르겠다. 라이브러리의 세계란..
이 상태에서 renderDay 함수를 만든다.
이렇게 각 loadItem
함수에 들어갔던 day가 renderDay
의 item을 찍으면 나오는데 undefined는 왜 나오는지 모르겠다.
react-native-papaer
라는 라이브러리를 사용해서 각 item에 대한 UI를 만든다.
완성!! 이제 투두를 만들자!
리네 감찾으러 왔다가 동하쓰 만나버렸어 !!