일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 라우터
- function
- 투두리스트
- ES6
- let
- redux
- typescript
- this
- var
- 뷰
- js
- const
- 타입스크립트
- CSS
- react
- Number
- 모던 자바스크립트
- VUE
- null
- 데이터 타입
- 컴포넌트
- BIND
- 모던
- todolist
- 함수
- 객체
- 자바스크립트
- 스코프
- 리액트
- Interface
- Today
- Total
목록React.js (10)
홍준혁
오늘의 주제는 Hook입니다. React 버전 16.8 이후부터 Hook API가 도입되면서 함수형 컴포넌트에서도 상태, 생명주기 등을 사용할 수 있게 되었습니다. Hook API를 사용해서 사용자의 입맛에 맞게 사용되어지는 Custom Hook 또한 있죠. 정말 편리한 기능입니다. 그래서 오늘은 Hook이 어떻게 동작하는지, 활용은 또 어떻게 하는지 알아보도록 하겠습니다. 면접 단골질문 클로저(Closure)를 아시나요? 여러분이 프론트엔드 개발자로써 면접을 봤다면 JS 클로저를 아냐는 질문을 들어봤을 것 같습니다. 클로저는 실행 컨텍스트 내부의 함수가 외부 실행컨텍스트를 참조할 때 생기는 현상을 의미하는데요, 사실 React Hook은 클로저와 매우 밀접한 관계가 있습니다. 아해의 코드를 보도록 하겠..
안녕하세요 오늘은 제가 평소에 궁금했던 주제로 글을 써보려고 합니다. Context API의 기능과 왜 사용하는지, Context API의 리렌더링 이슈란 무엇인지 그리고 Redux를 대체할 수 있는지. 위 내용을 설명하는 글을 작성할려고 합니다. 우선 Context API를 사용할려면 그 개념을 알아야 합니다. Context가 나온 이유 React는 단방향 데이터 흐름입니다. 즉, 부모 컴포넌트에서 자식 컴포넌트로 데이터를 직접 전달해야 합니다. 이 데이터 흐름은 간단해 보입니다. 그저 위에서 아래로 흐르니 말입니다. 실제로 단방향 데이터 흐름은 코드를 이해하기 쉽고 데이터 추적과 디버깅이 쉽습니다. 하지만, 이러한 흐름이 깊어진다고 생각해봅시다. 위 그림처럼 1이라는 컴포넌트에서 6이라는 컴포넌트에 ..
리액트 설계 방법에 대한 이해가 부족하다고 생각되어 공부하면서 글을 정리합니다. 개발을 하다 보면 앱이 커지고 그럴수록 컴포넌트의 수가 많아지고 컴포넌트의 수가 많아질수록 설계 방식이 중요해진다고 생각합니다. 단일 책임 원칙은 컴포넌트가 한 가지 일을 하는 것이 이상적이라는 설계 원칙입니다. 그래서 이러한 설계 원칙을 따르며 진행해보겠습니다. 위 컴포넌트는 리액트 공식문서에서 가져온 사진입니다. 각 컴포넌트를 자세히 살펴보도록 하겠습니다. FilterableProductTable (노란색) => 전체를 포괄하는 영역입니다. SearchBar (파란색) => 모든 유저의 입력을 받습니다. ProductTable (연두색) => 유저의 입력을 기반으로 데이터 컬렉션을 필터링해서 보여줍니다. ProductC..
가끔 모달을 만들다 보면 onClose, onOpen, isOpen 이런 값들을 props로 넘기고 넘기고 넘기고... 동일한 작업을 계속 하게됩니다. 이러한 현상은 Props Drilling 현상이라고 하며, 당연하게도 프로젝트가 커질수록 좋지 않은 구조입니다. 그럼 방법은 뭘까요? 이번 아티클에서는 리액트에서 효율적으로 모달 상태를 관리하는 법을 다뤄보도록 하겠습니다. const [isAModalOpen, setIsAModalOpen] = useState(false); const [isBModalOpen, setIsBModalOpen] = useState(false); const [isCModalOpen, setIsCModalOpen] = useState(false); const handleAOpen..
react query에서 무한스크롤을 구현하려면 useInfiniteQuery라는 훅을 제공합니다. 하지만 먼저 서버쪽에서 페이지네이션을 구현해야 합니다. 현 HLOG서버의 get /post의 반환값은 모든 포스트를 반환하게 됩니다. 이를 페이지네이션을 반환하는 방식으로 변환해보도록 하겠습니다. 페이지네이션 방식에는 offset방식과 cursor방식이 있는데, offset방식은 limit, offset쿼리를 사용하여서 페이지를 구분합니다. >이런 방식에 클릭하는 네이게이션을 사용할 때 주로 사용하는 방식이죠. cursor기반 방식은 무엇일까요? 최근 idx를 기준으로 구분하는 방식입니다. 이는 저희가 구현하려는 무한스크롤 방식에 적합합니다. const page = Number(req.query.page)..
React에서 토큰 기반 인증을 어떤 식으로 하는 것이 가장 효율적일까요? 많은 방법이 있겠지만 이번 포스트에서는 제가 생각했을 때 가장 효율적이라고 생각하는 인증 방식을 기술하려고 합니다. 먼저 토큰이 흘러가는 방식을 한번 생각해봅시다. AccessToken으로 인증을 진행하게 됩니다. 만약 AccessToken이 만료된다면 RefreshToken으로 Refresh를 해주어야 하죠. 왜 AccessToken을 계속 사용하지 않고 Refresh를 주기적으로 해주어야 할까요? 그 이유는 보안에 있습니다. AccessToken이 중간에 탈취된다면 정보 누출의 위험이 있겠죠. 그래서 AccessToken의 만료기간을 짧게 주고 RefreshToken의 만료기간을 길게 유지해 인증을 유지하는 것입니다. 위 스펙..