프로그램 4주차 2022/04/01~ 2022/04/10 리액트 심화
과제 요구사항

기능 목록
1. 게시글 (메인페이지)
- 목록 가져오기
- 추가하기 ( +이미지 업로드하기 )
- 삭제하기
- 수정하기
2. 회원가입하기
3. 로그인하기
4. 파이어베이스 or S3 배포
페이지별 상세 페이지
- 회원가입 페이지
- 이메일 형식 체크, 비밀번호 체크할 것
- 로그인 페이지
- 이메일, 패스워드 미기입 시 로그인 버튼 활성화 막을 것
- 메인 페이지(게시글 목록 페이지)
- 게시글 목록 노출
- 게시글 하나는 작성자, 작성 시간, 이미지 미리보기, 텍스트 내용으로 구성
- 게시글 하나를 클릭 시, 게시글 상세 페이지로 이동
- 글 작성 페이지
- 레이아웃 선택 버튼
- 3가지 레이아웃 중 선택하도록 한다.
- 이미지가 오른편에, 텍스트는 왼편에 위치한 레이아웃
- 이미지가 왼편에, 텍스트는 오른편에 위치한 레이아웃
- 텍스트가 위에, 이미지는 아래에 위치한 레이아웃
- 레이아웃 선택 시, 게시글 레이아웃(모양새)대로 보이도록 한다.
- 텍스트, 이미지 중 입력 안된 게 있다면 게시글 작성 버튼 비활성화
- 작성 완료 시 메인 페이지로 이동
- 3가지 레이아웃 중 선택하도록 한다.
- 레이아웃 선택 버튼
- 게시글 상세 페이지
- 게시글 레이아웃에 맞춰 이미지, 텍스트 위치 조절해서 노출
추가 기능
- 메인 페이지 (게시글 목록 페이지)
- 무한 스크롤
- 좋아요 기능 : 게시글 중 좋아요버튼(분홍색 하트 버튼)을 누르면 [좋아요]를 +1한다. 다시 누르면 분홍색 하트가 회색 하트가 되고 좋아요가 -1개 된다.
- 이미지 여러장 업로드 (상세 페이지에서는 슬라이더로 이미지 넘겨가며 보도록 처리)
- 알림 기능 만들기 (+알림페이지도 추가할 것!)
- 좋아요 눌렀을 때 게시글 위로 하트 이미지가 나타났다 사라지게 해보기
구현된 페이지와 기능들
라우터 시켜주는곳 App.js
내 코드
파이어베이스 개인정보를 가지고있는 firebase.js
내 코드
1. 특정 Ffirebase를 식별해 해당기능에 접근하게도와주는 firebaseConfig.apiKey;
2. 회원가입과 로그인을 위한 인증에 관련된 firebase.auth()
3. 파이어 베이스에서 생성한 프로젝트를 사용하게 도와주는 firebase.firestore();
4. 파이어베이스용 사용자가 사진 및 동영상등의 콘텐츠를 저장하고 제공하게 도와주는 firebase.storage();
파이어베이스와 내 리듀서와 연결해주는 configStore.js
내 코드
1. 리듀서를 3개 묶엇 사용하도록 도와주는 rootReducer
2. thunk 함수내에 라우터를 사용하기 위하여 미들웨어로 구성한 middlewares
3. 어느 개발환경인지를 알려주는 env
4. 개발환경이 맞는지 맞으면 어떻게 쓸건지 등을 정하는 if (env === "development")
5. 자바스크립튼 V8 엔진이 돌아가기만 하면 브라우가 아니어도 돌아가는데 브라우저가 아닐때면 윈도우라는 객체가 아님 그래서 브라우저 일떄만 돌려주라고 적용하는 typeof window === "object"
적용된 리듀서와 CURD 가 있는 post.js
내 코드
적용된 리듀서와 CURD 가 있는 image.js
내 코드
적용된 리듀서와 CURD 가 있는 user.js
내 코드
파이어베이스에 연결되어있는 모든 데이터를 불러오는 메인페이지 PostList.js
내 코드
파이어베이스에 저장되어있는 로그인 정보를 비교하여 해당 아이디로 접속하게 도와주는 로그인페이지 Login.js
내 코드
신규사용자가 로그인하여 게시물을 작성하기위해 사용자의 정보값을 파이어 베이스로 넘겨주는 회원가입페이지 : Signup.js
내 코드
파이어베이스에서 받아온 로그인 정보에 내용을 작성 및 업로드 와 작성된 내용과 사진을 수정을 같이하는 작성페이지 PostWrite.js
내 코드
파이어베이스에 저장된 아이디와 사용자가 클릭한 아이디를 같은 정보를 표현해주는 상세페이지 PostDelete.js
내 코드
사용자의 정보를 브라우저에서 가지고있게 도와주는 Cookie.js
내 코드
무한 스크롤을 도와주는 infinityScroll.js
내 코드
이미지 업로드와 관련된 Upload.js
내 코드
로그인이 유무를 비교하여 상태를 상단에 보여주는 메뉴바 Header.js
내 코드
나의 생각
리덕스를 사용해서 로그인과 이미지 게시글등을 만들어보는 숙련주차였습니다
컴포넌트를 여러개 나눠 작업하는 방법을 배우는 한주였고 공부가 많이 필요하다는 생각이 다시한번 느끼게 되는 한주였습니다
컴포넌트를 잘게 쪼개 사용하고 만들어 보려는 기능을 어디서부터 시작해야하는지에대해 많이 공부하고 적용해봐야겠습니다
이 기간중 배운것
1. 컴포넌트 여러개 쪼개 간편하게 사용하기
2. 이미지 업로드하는법
3. 여러가지의 리듀서 사용하여 관리하는법
4. 라이브러리 사용해서 리듀서 작성밥법
앞으로의 필요한 점
1. 다른 방식 코드의 사용법
2. 자바스크립트 함수 사용법
3. 코드를 간결하게 정리하는 법
4. redux 활용법
5. db를 활용하여 데이터를 주고받는 방법들에 대한 사용법
6. 리액트의 기능들
7. 발표력 향상
8. 컴포넌트 여러개 쪼개서 간편하게 사용하기
9. 로그인관련 작동방법 공부하기
10. 필요한 기능들의 로직
2022/04/08~ 2022/04/10 ( 미니프로젝트 )
깃허브 주소
https://github.com/insidelamp/React_Study/tree/main/homework-react-3nd%20week
GitHub - insidelamp/React_Study
Contribute to insidelamp/React_Study development by creating an account on GitHub.
github.com
2022/04/03~ 2022/04/03 ( 4주 차 회고 )
항해를 시작하고 5주차가 지나고 작성하는 회고입니다
새로운걸 계속 배우고 습득해야하고 기능들을 사용법에 대해 반복 학습을 하고있습니다
따라 작성한 코드들을 가지고 내 코드로 소화해서 응용할수있는 지점까지 더욱 노력해야할것같습니다
하나의 방식만으로 생가하지말고 여러가지 방식으로도 사용이 가능하면 좋겠습니다
What I Learned
이번 WIL 키워드
Axios
- Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리입니다.
특징
- 운영 환경에 따라 브라우저의 XMLHttpRequest 객체 또는 Node.js의 http api 사용
- Promise(ES6) API 사용
- 요청과 응답 데이터의 변형
- HTTP 요청 취소
- HTTP 요청과 응답을 JSON형태로 자동 변경