본문 바로가기

Racstagram_V1

(16)
20210429 instagram 만들기 16(React), Submit loading Modal 구현 submit 처리시 laoding modal 구현하기 submit을 보내는 경우 큰 이미지 파일을 올리거나 할때 처리 시간이 조금 걸리기 때문에 사용자에게 처리하고 있음을 알려줄 필요가 있다. 기존의 init load Component를 재활용 해서 사용하였다. 하지만 그전과 다르게 modal적인 요소를 넣어 현재 화면에 띄우는 형식으로 만들었다. component 넣기 기존 화면인 home route 또는 profile route 아래에 modal이 동작하는 것과 같이 추가하였다. 그리고 state를 변경하는 것은 글작성, profile update 하는 submit에 추가함으로서 보이거나 안보이게 할수 있도록 하였다. // Home component , profile component 하단에 추가 c..
20210428 instagram 만들기 15(React), proifle 반영 기능 개선(비동기 순서처리, promise.all, 다중 await), 연속 submit 막기, firebase google로 계정 시작 시 google user 정보 가져오기 proifle 반영 기능 개선 문제점 병렬처리를 하였지만 비효율적으로 사용하고 있음 (동시에 두가지 photo , display update시 모두 변경시 속도지연과 setUpdate함수 호출의 순서 때문에 rerender시에 반영이 안되게 보이는 것들이 있음) forEach의 경우 병렬 처리하여 안에서 await로 순서처리 시켜도 넘어가 버림 그래서 setUpdated를 너무 빨리 하는 문제가 생김 중복되는 코드가 많아짐 Rerendering 타이밍 문제, 병렬 효율적으로 사용하기 참고한 사이트 [번역] async/await 를 사용하기 전에 promise를 이해하기 by kiwanjung MDN : promise.all() 배열에 비동기 작업을 실시할 때 알아두면 좋은 이야기들 by hanameee ..
20210427 instagram 만들기 14(React), Img 태그-OnError 처리, profile update시 글 작성자 표시 반영 구현 Img Error 처리 img를 가져오는 경우 보통 src로 img url 또는 server에 존재하는 경로를 연결하곤 한다. 이번 프로젝트의 경우에는, img를 Data URL 형식으로 가져오게 된다. 그러다 보니 URL이 옳지 못하거나, 더이상 web에 올려지지 않아 있는 경우 img를 로드 하지 못하고 흔히 말하는 엑박이 뜨게 되는 것이다. (alt 속성으로 지정한 이름이 뜸) 이 프로젝트의 경우 firebase의 storage에서 의도치 않게 img file이 지워져서 더이상 url을 load못하게되는 경우 어떻게 엑박을 안뜨게 하고 자연스럽게 user 화면을 표시할 것인가에 중점을 두고 있다. 방법 img 태그의 onError 속성 사용 HTML 에서는 onerror React(JSX)에서는 o..
20210422 instagram 만들기 13, 반응형 img 비율 유지 시키기, 반응형 Nav bar, profile-update CSS, 글상자 개행(/n) 구현하기(3가지 방법) Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더 수업을 거의다 듣고 CSS 작업은 내가 하고 싶은 대로 하고 있음, 트위터 수업이지만 instagram으로 만들고 있음 CSS : 반응형 웹 Navigation bar 반응형으로 만들기 justify-content: space-between 값을 적용시켜서 브라우저 크기가 작아져도 각 아이템은 좌우로 붙어 있는 상태를 유지하면서 작아지게 됨 글상자 img 비율 유지하는 반응형으로 만들기 width: 100%로 주고, heigth: fit-content으로 주어 img비율을 유지하게 함 그리고 min-width, max-width를 주어서 적당히 크고 작게 변화줄수 있게 해줌 CSS : Profile Update 버튼 형으로 만들기 설명 pro..
20210420 instagram 만들기 12, Modal 적용하기(profile route), 현재 URL경로 판별 (reac-router-dom: useRouteMatch), firebase get방식 page reRender 시키기(useEffect), Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더 수업을 거의다 듣고 CSS 작업은 내가 하고 싶은 대로 하고 있음, 트위터 수업이지만 instagram으로 만들고 있음 Modal 기능 profile route에 적용하기 접근 profile의 경우에는 자신이 쓴글을 볼수 있다. 그러다 보니 똑같이 Home component에서 사용한 rweet이라는 글 박스 component를 공유하게 된다. 다만, 처음에 잘못 한것이 profile page에서 글 박스를 render 할 때, get방식으로 가져온다는 것이다. 그러다 보니 home에서는 onSnapshot 방식으로 가져오는 것 다르게 database가 update가 되면 바로 반영되서 바뀌는 것이 아니고 update 마다 새로 databas..
20210419 React and Firebase11, Modal 창 구현, CSS display flex 꿀팁 글, React event Bubbling 이해 및 꿀팁, Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더 수업을 거의다 듣고 CSS 작업은 내가 하고 싶은 대로 하고 있음, 트위터 수업이지만 instagram으로 만들고 있음 CSS 작업 및 react code 수정 1. 일단 예전에 작성했던 문제점인 menu icon 밀림 현상을 해결하였다. "20210416 글에서" creator 이름 길어지면 margin으로 설정했기 때문에 menu 버튼이 밀림 (header position fixed 때문에 영향을 받아서 margin으로 했는데 다시 손봐야 함) -> stacking 문제인 듯 MDN: stacking_context 해당 작업의 경우에는 position fixed가 필요 없이 단순하게 position absoulte로 해결 하였음(왜 abs..
20210416 React and Firebase10, Auth 페이지 CSS, CSS 요소(element) 정렬하는 법, 반응형 요소(element), fit-content, favicon 만드는 법, Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더 수업을 거의다 듣고 CSS 작업은 내가 하고 싶은 대로 하고 있음, 트위터 수업이지만 instagram으로 만들고 있음 CSS 작업 일단, 각 유저의 photoURL 업데이트에 따라 사용자의 모든 작성글에 creator의 displayName과 photoUrl을 같이 업데이트 하는 것은 더 생각해야될 문제 같아서 나중으로 해두고 먼저 전체적인 app css에 더 신경썼다. Auth 페이지 CSS 로그인 페이지를 instagram 처럼 CSS 했다. 확실히 instagram page를 참고해서 CSS를 하니 한결 더 편하게 할수 있었다. (디자인 창조는 힘든 일이다 ;) ) 오랜만에 CSS를 하다 보니 CSS를 처음 할때는 좀 버벅였는데 하다보..
20210413 React and Firebase09, useEffect error, cleanup function, instagram css01, Style 넣기, CSS Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. useEffect error Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup 참고한 사이트 : router 이동시 메모리 lack 에러 (by 기억보다 기록을) 참고한 사이트 : 리액트의 Hooks 완벽 정복하..
20210412 React and Firebase08, firebase storage file 지우기(delete, refFromURL), profile 수정하기, profile로 내가 쓴 글만 보기(where, orderBy), profile 이름 바꾸기(user, displayName, updateProfile), 객체 커스텀(object resizing),.. Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Deleting Files Reference : delete() delete ( ) : Promise : 현재 reference 위치의 object를 제거함 (즉, 해당 reference를 제거할려면 reference location을 알아야함) 결국에는 document, collection 과 같이 video img와 같은 파일을 다루게 되어 정보를 저장하는 경우에는 reference location이 항상 필요하게 되고, 우리는 현재 storage에 저장되어 있는 파일의 url을 document에 가지고 있으므로 이를 활용하여 r..
20210409 React and Firebase07, img파일 data_url로 바꾸기, firebase에 img파일 업로드, download_url, FileReader API, Firestorage, 랜덤id 생성 패키지(uuid), Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Preivew Image (File Upload) firebase console의 storage 기능에서 bucket은 파일을 넣는 곳임 트윗할 때 사진을 첨부하기 위해서 트윗하는 방법을 바꿔야함 Hooks attachment hook은 업로드하는 file를 표시할 수 있는 string 형식의 dataURL 값을 가짐 default 는 null 값으로 둠 import Rweet from "components/Rweet"; import { dbService } from "fBase"; import React, { useEffect, useState ..
20210408 React and Firebase06, 작성한 트윗 삭제 및 수정(Delete and Update), 데이터베이스 반영, doc(), delete(), update(), useState 토글 활용, Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Delete and Update 지금 까지 진행했던 실시간 데이터 update는 정말 좋은 기능이지만 원하지 않을 때도 너무 실시간으로 실행이 됨 예를 들어, 트위터에서 누군가가 추가시키고 지우는게 나타나고, 댓글들이 생성되는 것은 보고 싶지만 실시간으로 수정되고 사라지는 모습은 사용자에게 불편함(물론, 실시간 채팅 앱에서는 필요하지만) 트윗 Component 분리와 사용자와 작성자 일치에 따른 delete, edit 버튼 표시 Rweet Component 생성(분리 관리) 효율적인 관리를 위해서 트윗을 하는 부분을 따로 component화 시킬 ..
20210407 React and Firebase05 AJAX(SPA,fetchAPI), Database에서 값 가져오기 : collection, get(), 실시간 데이터 가져오기 : collection, onSnapshot(), Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Getting the Rweets rweet useState가 값을 입력하여 Database에 넣는 것이라면, rweets useState는 Database에서 값을 가져오기 위한 useState이다. rweets는 빈 배열 형식을 띄고 있다. 그렇기 때문에 database collection의 Document를 하나씩 가져와서 배열안에 넣어 저장하고 화면으로 불러올 것이다. database에서 document를 가져오기 위해서는 collection에서 get method를 사용한다. Database에서 data를 가져오는 함수(firebase) ..
20210405 React and Firebase04 google로그인, github로그인, 로그아웃, 데이터베이스 연결(firestore), redirect, useHistroy, navigation, signOut, GoogleAuthProvider, Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Social Login signinwithpopup signinwithredirect GoogleAuthProvider 소셜 로그인 기능을 사용하기 위해서는 signinwithpopup 또는 signinwithredirect를 활용 할 수 있다. Auth : Social Login 해당 Social Login 버튼을 눌렀을 때 처리 할 onSocialClick 함수를 만든다. 로그인을 하려면 signinwithpopup에 해당 provider를 넣어 처리 한다. provider에는 google, facebook, github 등이 존재하는데 전에 ..
20210404 React and Firebase03 계정 생성, 로그인, Auth, createuserwithemailandpassword, setPersistence, onAuthStateChanged, Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Creating Account Provider Auth provider EmailAuthProvider createuserwithemailandpassword : 사용자의 새로운 계정을 생성 할수 있게 email, password를 받아 User Account를 생성시키고 바로 로그인 하며, 나중에 Account를 가지고 로그인 할 수 있음 (계정이 이미 존재하거나, 타당하지 않은 값인 경우 fail을 return) newAccount라는 useState를 사용한 hook을 생성해서 Account를 가지고 있는지 확인해서, newAccount 가 ..
20210402 React and Firebase02, firebase web api, Absolute Imports, login 여부 판단, Firebase Authentication, Auth Form Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Authentication (인증) Absolute Imports import시에 dot을 쓰는 상대 경로는 지저분 하므로 절대 경로를 사용하는 import 기준을 만듦 Absolute imports by create react app 이처럼 최상위 dir에 jsconfig.json 파일 만들면 아래처럼 src 기준으로 import path를 써도 됨 // 절대 경로 기준이 src로 시작됨 { "compilerOptions": { "baseUrl": "src" }, "include": ["src"] } firebase web api 둘러보기 Fir..
20210401 React and Firebase01, Firebase 사용 기준 및 AWS Amplify 비교, 트위터 클론 코딩을 위한 환경설정(React, Firebase), .env 파일, React(Router, Route, Switch), Nomadcoder Nomadcoder 노마드코더 : 트위터 클론 수업 노마드코더님의 강의를 들으면서 공부한 내용을 정리하는 용도로 작성되었으며, 본내용이 틀릴 수 도 있습니다. Firebase Firebase Site Firebase는 그냥 데이터베이스 였음, 구글에 속하지도 않았다가 구글에 인수되면서 확장되었음 이 프로젝트에서는 Firebase를 통해서 데이터 베이스이자 백엔드인 Cloud Firestore를 사용함(데이터베이스 관련 코드없이 데이터베이스를 사용하게 해줌!) Cloud Firestore : Detail Fireabase : products Firebase ML : 머신러닝 기능 제공 Cloud Functions : serverless function 기능 제공 (AWS, Lamda 같은것임) Cloud ..