오늘의 결론
Keyframes (animation에서 사용하는 속성,규칙 )
ProgressBar(컴포넌트 Progressbar생성(export), app.js에 붙이기(import), Progressbar에서 styled-componente만들어서 div태그 붙이기, 리덕스에서 데이터 가져오기(useSelector), 리덕스에서 데이터 가져온것 중 completed가 true인 데이터를 걸러주기 위해 count변수 생성과 map함수 사용, 걸러진 데이터를 hightLight에 props로 넘겨주어서 컬러 넣는 곳에 사용
맨위로 올리기 window.scrollTo({top:0,left:0, behavior:"smooth"}); , 좌표말고 특정엘리먼트의 좌표를 구해다가 설정해 줄 수 있다.
스크롤 만들기 (max-heiht: 50vh, overflow: scroll, hidden 사용)
ProgressBar Circle스타일 적용하기 (display, margin, align-items)
자식태그에 스타일 추가하기 (styled에서 & 쓰고 태그쓴다음 스타일 주면된다. 입력창은 outline이 있는것을 주의하자.)
Firebase란? (헬스체크하면서 서버올리게, 데이터 편하게 가져오기, 분산처리해주는 기능들을 제공) 4-6 4-7강 보고 설치하기
Firebase 패키지 설치 (yard add firebase), 데이터베이스만들기
FireStore 데이터 사용해보기(async, await)
4-9 학습자료 참고
Firestore에서 데이터 가져오기 미들웨어 사용(yarn add redux-thunk)
머터리얼 ui ($ yarn add @material-ui/core @material-ui/icons)
페이지 의도적으로 숨기기 (로딩 스피너)
AWS S3 버킷 and Route53
오늘 배운 것
Firebase 패키지 설치 (yard add firebase),
firebase database(즐찾페이지의 왼쪽)-> 오른쪽위 문서로이동 -> 웹시작하기 -> 설치법등 존재, 여기서 앱등록하는 방법 참고하여 앱 등록할꺼다.
-> 앱등록은 즐찾해놓은 페이지에서 프로젝트 개요 옆 설정 눌러서 앱찾아서 하거나 바로 파란 그림에 보이는 </>
앱 클릭해서 가능 ->
bucket_list라고 이름을 주고 호스팅사용여부 체크박스는 나중에 -> firebase sdk추가쪽에서 초기화 코드 긴거 복사(패키지 설치법쪽에서도 가져올 수 있음) -> 프로젝트로와서 firebase.js파일생성 후 복붙 -> 그리고 다시 설치법페이지 가서 4단계 크기축소를 위한 번들러사용의 웹용 cloud firestore클릭->
버전이 있는데 내 프로젝트 package.json 가서 버전확인 -> 버전9의 firebase와 cloud firestore를 모두 가져와야합니다 코드 복사
-> firebase.js맨위에 복붙, initialzeapp은 중복이니 삭제 -> 다시 설치법페이지의 맨아래 Cloud Firestore 초기화 확인-> 아래 2개만 다시 복사해서 firebase.js 맨위 맨아래에 복사해준다. (첫번째 꺼는 중복이니까 안넣어도 되는 듯)
-> 그리고 안쓰는 improt getAnalytics 지워주고, 아래 const app, analytics 주석처리하고 const app의 initializeApp(firebaseconfig);를 변수 없이 따로 써준다.
변수 없이 따로 써주는 이유는 Firebase를 호출 하는 순간에 Firebase를 사용할 수 있도록 초기화 기초설정 해준다는 뜻이다. 그리고 앱에서도 사용할 수 있도록 export해준다.
-> 그리고 app.js가서 import해주고 console.log로 확인 => type:firebase라는 데이터가 잘 들어와있다.
-> 이제 firestore에 데이터 베이스를 만들어 줄 차례다. ->아래 Firestroe Database클릭
->데이터베이스 만들기 클릭
->로컬 호스트에서 테스트하면서 만들꺼니 테스트모드 시작 클릭
-> 지역은 한번선택하면 변경 불가하고 맘대로 골라도된다. asai-norethest2를 골르고 사용설정 클릭
->조금 기다리면 컬렉션 시작 버튼이 있는 페이지가 나타난다. 컬렉션 시작 버튼 클릭
-> 클릭 후 컬렉션 id를 정해준다.
-> 문서id는 랜덤으로 사용 클릭하면 알아서 생성된다. 아래 필드들은 내가 리덕스에서 지정해준 데이터의 키값을 그대로 넣어주고 값은 임의로 넣어주고 저장 하면 생성완료.
이제 firebse db에서 데이터를 활용하는 방법을 알아보려한다.
이제 리덕스에서 firestore 데이터를 사용해보려한다.
액션 -> 미들웨어가 할일 하기 -> 리듀서에서 처리
네번째로 await를 loadwordFb쪽에 써준다. 그러면 promise가 아닌 볼 수 있는 데이터 형식으로 나온다. 그치만 리스트형식이라니라 딕셔너리 형식으로 나왔다.
다섯번째 우리가 원하는 배열에 딕셔너리 형식으로 바꾸기위해
word_list 빈배열을 만들어주고, 딕셔너리 내장함수foreach를 돌려서 콘솔을 찍어봤다.
(w는 word_data의 doc하나하나를 의미한다 즉, 딕셔너리 한나씩을 말한다)
콘솔에 또 이상한데이터가 나왔는데 이제 여기서 콘솔에w.data()를 넣어줘보면 data가 제대로 나오는걸 볼 수 있다.
여섯번째로 w.data()를 빈 배열 word_list에 push해주고 콘솔로 찍어보면 잘들어가있다.
일곱번째
firebase에서 받아온 데이터를 이제 dispatch로 loadword액션을 전달해준다.
그리고 리듀서에가서 case word/Load만들고 return에 {list:action.word_list}로 바꾸고 브라우저 가보면 바뀌어있다.
나중에 수정 삭제 할때 id필요하다해서 id도 넣어줬다.
느낀 것
리덕스, firebase, styled component 등 보고 어떤 방식으로 써야하며 어떠한 형식의 데이터가 들어오는지 파악하고 이해하는게 중요하다는 걸 느꼈다. 하나하나 다 써가며 외우고있지만 아무래도 쉽게 외워지지 않는것 같다. 내가 고민하고 데이터의 흐름을 생각 해본 만큼 머리에 잘 남는다는걸 알기에 끝까지 포기하지않고 잘 해보자~
내일 배울 것
react 주특기 강의 심화