![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bv5THY/btr2O14annc/CUMDW9AfgucD3shbyK20ck/img.png)
만약 부모컴포넌트에 카운트+1 되는 버튼이 있다면 버튼 클릭할때마다 그 안에 있는 자식컴포넌트도 재렌더링됨 자식컴포넌트까지 계속 재렌더링 되버리면 성능이 저하됨 (자식컴포넌트가 무거울수도 있으니까) 내가 꼭 필요할때만 자식컴포넌트 재렌더링 시키고 싶으면? 자식 컴포넌트 만들때 memo 함수 안에 담아서 만들면 됨 memo - 자식 컴포넌트 꼭 필요할때만 재렌더링 1. import memo 2. 자식컴포넌트를 memo 함수로 감싸서 만들음 ● 원래 컴포넌트 ● memo로 감싸서 만든 컴포넌트 memo의 원리 memo는 그냥 재렌더링을 막아주는게 아니라 특정상황에서만 막아줌 부모에게 받은 props가 변할때는 재렌더링됨 부모 컴포에 있는 count state 자식 컴포에 props로 count state 전..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3RLdU/btr2FdwWsfo/xl5kdP0pHwT5T4QKmRrp50/img.png)
개발자도구 props 보냈는데 출력 안되는 경우, 이미지 경로 잘못되어서 이미지 출력 안나오는 경우 등 버그 생기면 개발자 도구를 확인해서 찾음 but 우리는 컴포넌트로 만드는데 개발자 도구에서는 일반 html로 나옴 컴포넌트 구조를 미리 보고싶으면 크롬 웹 스토어에서 React Developer Tools 설치 개발자도구에 Components, Profiler 탭 생김 ● Components - props, state 등 어떻게 반영되는지 확인 ● Profiler - 성능저하되는 컴포넌트 범인 찾기 컴포넌트 렌더링 시간은 보통 빠름, 대부분의 지연원인은 ajax 요청임 - 서버에서 데이터 늦게오는 경우 lazy import - 메인페이지 로딩 속도 개선 가능 SPA(Single Page Applicat..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bjsU6s/btr11507Jsk/NUCdIKn0CtR8BykRmGKtS1/img.png)
서버랑 통신하는 코드를 ajax로 짜다보면 응용기능이 필요해질때가 있음 -ajax 성공시/실패시 각각 html 보여주려면? -몇초마다 자동으로 ajax 요청해서 서버에서 데이터 실시간으로 받으려면? -ajax 요청 실패시 몇초 후 요청 재시도하려면? -다음페이지 미리 가져오고 싶으면? React Query라는 라이브러리 쓰면 위의 기능 사용 가능 React Query가 유용한 분야는 실시간 sns이나 코인거래소 등 실시간 데이터를 계속 가져와야하는 사이트들 그외에는 굳이 필요 없음 React Query 1. 라이브러리 설치 2. index.js 셋팅 서버에서 유저이름 가져와 보여주기 사이트 접속 후 로그인하면 오른쪽 맨위에 유저이름 출력되는 기능 만들기 ● ajax 요청하기 ● react-query 에 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bteijL/btr1YJJqqaZ/944s3MLTwiJaILgykrQ3v1/img.png)
개발 하기 전에 배포를 먼저 해서 얻을 수 있는 이점 내가 개발을 했을 때 내 로컬에서는 잘 동작하던게 실제로 배포를 하면 제대로 동작하지 않는 경우가 많음 개발을 다 하고 나서 배포를 하면 어떤 코드때문에 배포 했을 때 문제가 생기는지 늦게 알게 됨 그런데 매일매일 개발 끝나고 바로 배포를 하여 실서버에서 확인한다면 실서버에서 문제가 되는 코드를 훨씬 빨리 파악하고 수정할 수 있음 개발이 끝날때마다 매일 배포하면 너무 번거로우니까 개발 끝나면 자동으로 배포를 할수있게 만들기 서버만들기 1. 프론트엔드, 백엔드가 있어야 하므로 client, server 폴더 만들기 2. git 레파지토리 만들기 (git init) *깃으로 관리하는 저장소 3. client 폴더에 리액트 설치하기 (npx create-r..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c8uvnb/btr1yzmxUO1/40KLy1Otqr3JdetZB11lP0/img.png)
서버와 클라이언트 >> 서버와 클라이언트 관계 - 클라이언트가 서버로 요청(request)보냄 - 서버는 요청을 처리 - 처리 후 클라이언트에 응답(response)보냄 서버에게 주도권있어서 서버가 정해준대로 클라이언트가 따라감 클라이언트 - req(요청) 서버 - res(응답) 만약 /list 페이지로 접속했을때 DB에 저장된 데이터들을 꺼내서 보여주고 싶으면? ejs 라이브러리 사용 *ejs - html을 쓰기 쉽게 도와주는 라이브러리 ejs 1. 라이브러리 설치 npm install ejs 2. server.js 파일 상단에 코드 작성 app.set('view engine','ejs'); 3. list.html을 list.ejs로 이름 바꾸고 views 폴더를 만들어서 그 *안에 넣기 * ejs는 ..
API 소프트웨어가 다른 소프트웨어로 부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단 ex) 날씨를 알려주는 다양한 웹사이트들, 앱들은 모두 기상청 서버에 데이터를 요청하고 그 데이터를 받아감 즉 서버와 웹, 앱들 사이에 정보들 요청되고 전송되는 것 웹, 앱들이 서버에 정보를 요청할때 지정된 형식이 있는데 그 지정된 형식을 API 라고함 기상청에 date:191023|place:seoul|which:temperature 주소 입력해서 데이터를 요청하면 17deree 라고 데이터 줌 이렇게 정해진 메뉴얼이 있으면 누구든 이 메뉴얼을 참조해서 기상청 정보를 활용하는 소프트웨어를 만들 수 있음 REST API - 주소 정하는 규칙 - 자원에 어떤 조작(CRUD)을 할지 HTTP 메소드로 나타냄 - 서버..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bLB5KX/btr0WfpJRCH/psqXkaaWuPwrD0TXTgygGK/img.png)
왜 브라우저를 새로고침하면 state값이 초기값으로 돌아갈까? → html,js 처음부터 다시 읽기때문에 사이트 재접속해도 state가 남아있게 하고싶으면? → state를 서버로 보내서 데이터 베이스에 영구적으로 저장하고, 필요할때마다 데이터베이스에서 가져오면 됨 근데 서버도 모르고 데이터베이스 만드는 방법도 모른다면? → 차선책 localStorage에 저장해둬도 됨(반영구적 저장가능) localStorage : 브라우저에서 제공하는 반영구적 데이터 저장소 ● 위치 브라우저 → 개발자도구 → Application → Local Storage ● 특징 1. key : value 형태로 저장 가능 2. 최대 5MB까지 문자만 저장 가능 (숫자로 저장해도 문자로 바뀜) 3. 사이트 재접속해도 남아있음(브라..
함수 만드는 3가지 방법 1. 일반적인 방법 function f1(num1,num2){ return num1+num2 } 2. 변수에 함수 담기 const f1 = function(num1, num2){ return num1+num2 } 3. 변수에 화살표 함수 담기 const f1 = (num1,num2) => { return num1+num2 } 4. 변수에 중괄호,리턴 생략한 화살표 함수 담기 *바디안의 코드가 한줄인 경우 생략 가능 const f1 = (num1,num2) => num1+num2