본문 바로가기
728x90

분류 전체보기153

클로저 (Closure) “A closure is the combination of a function and the lexical environment within which that function was declared.” 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다. 클로저의 정의 MDN에서 정의하고 있는 클로저(Closure)이다. 위 정의에서 말하는 “함수”란 반환된 내부 함수를 의미하고 “그 함수가 선언될 때의 렉시컬 환경(Lexical environment)”란 내부 함수가 선언됐을 때의 스코프를 의미한다. 즉, 클로저는 반환된 내부 함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프.. 2021. 10. 7.
결제 프로세스, imp_uid, 아임포트 웹 훅 노티피케이션 8/11 결제 프로세스 최종적으로 카드결제를 진행하기 위해서, 수많은 카드사 앞단에서 결제를 처리해주는 PG(Payment Gateway)사가 무엇인지 알아야 한다. 이러한 각각의 PG사와 계약해서 결제를 처리해야 하는데, PG사 마다 결제모듈 연동 방식이 모두 다르다. (설명서도 굉장히 복잡하고, 내용도 많다.) 이렇게, 여러 PG사들의 앞단에서 복잡한 연동을 대신 해주고 있는 서비스가 바로 "아임포트" 서비스. 아임포트를 연동하면 결제하는 화면이 나온다. 여기서 결제를 하게되면, 결제ID(imp_uid)라는 데이터를 받게끔 되어 있다. 이 imp_uid를 Backend에 전송하여 데이터베이스에서 결제 정보를 관리할 수 있도록 만들었다. 그런데, 무통장입금(가상계좌)을 하거나, 모바일에서 결제를 하는 .. 2021. 8. 11.
여러가지 쿼리방식, refetch문제점, ApolloState 직접 수정 8/6 🧐 useApolloClient로 원하는 곳에서 쿼리하기 🧐 그동안 데이터를 쿼리해올 때, useQuery를 사용 했다. 그런데, 기존에 openapi를 사용하기 위해 axios를 사용했을 때를 기억하면, axios는 useQuery와 다르게, 내가 원하는 곳에서 원하는 버튼을 클릭했을 때, api요청을 할 수 있었다. 하지만! useQuery는 이렇게 동작하지 않고, 페이지가 렌더링될 때 자동으로 쿼리가 요청됐다. 그렇다면, useQuery를 axios처럼 우리가 원하는 곳에서 api를 요청하기 위해선 어떻게 하면 좋을까? 이를 위해 사용했던 기능이 useApolloClient 👏👏 그렇다면, 왜 useQuery를 이용하여 페이지가 랜더링될 때 fetchUserLoggedIn 이라는 API를 자.. 2021. 8. 8.
폼 라이브러리, 검증 라이브러리, 공통 컴포넌트 8/5 폼 라이브러리는 여러 종류가 있다. react-form, redux-form, formik, react-hook-form 등... 폼 라이브러리란 그동안 스프레드 연산자를 쓰고, onChangeInput, isEvery, state 등을 만들어서 직접 관리했던 폼들을 미리 만들어 놓고, 라이브러리 형태로 제공해 주는 것이 폼 라이브러리. 그 중, 최근에 함수형 컴포넌트에서 가장 많이 사용되는 폼 라이브러리가 바로 react-hook-form 검증 라이브러리 -> 오늘은 yup yup을 사용하여, 기존의 정규표현식 또는 length를 기준으로 한 최소/최대글자수, 등의 조건을 아주 쉽게 추가할 수 있다. 또한, 검증 라이브러리와 폼 라이브러리는 서로간에 독립적으로 사용될 수 있으므로, 반드시 rea.. 2021. 8. 8.
useApolloClient로 원하는 곳에서 쿼리하기, apolloCache 직접 수정하기 8/4 권한 분기에 대해서 배웠다. 프론트엔드가 최소 2개 이상으로 분리된다. 사용자들이 접속하는 사용자 프론트엔드 서버, 뒤에서 관리자들이 접속하는 관리자 프론트엔드 서버, 더 많게는 판매자용, 구매자용, 중개자용 등등 여러 관리자서버가 존재한다. 우리는 단지 사용자이기 때문에 매일 사용하는 네이버 홈페이지가 하나밖에 없는줄 알고 있었는데 내가 여태 몰랐던 네이버 관리자 프론트엔드 서버가 존재한다. 여기에는 네이버 가입자 명단 등등을 게시판 형태로 볼 수 있도록 페이지네이션이 되어있을 것이다. 이런 권한 분기도 있지만, 오늘 배웠던 부분은 사용자 서버 안에서의 로그인 한 유저 / 로그인 안한 유저를 구분하는 권한 분기이다. 이 방법으로는 useEffect에서 accessToken이 없으면 /login .. 2021. 8. 8.
로그인을 하려면? 8/3 Backend는 어떤 사람이 api를 요청하는지 알 수 없다. 그래서! 유저의 모든 api 요청에는 accessToken을 함께 보내준다. 이 토큰을 받은 Backend는 accessToken을 열어서 그 안에있는 JSON 내용물을 보고 "짱구"인지 "맹구"인지 구분을 할 수 있다. 이러한 작업이 가능한 이유는 accessToken이 JWT(Json-Web-Token)이기 때문이다. JWT 가짜 토큰인지 확인 인증 여기에 토큰을 넣어서 보내준다 백엔드가 이걸 가지고 있다~ 첨부가 되어서 날라가게 된다 LoginSuccess에 들어가도 로그인으로 들어가진다. 로그인을 하고 새로고침을 하면 또 다시 돌아간다. 2021. 8. 8.
728x90