일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터 타입
- 라우터
- 리액트
- 스코프
- const
- var
- js
- let
- function
- redux
- typescript
- this
- CSS
- 타입스크립트
- 투두리스트
- 모던 자바스크립트
- null
- VUE
- 객체
- 컴포넌트
- 뷰
- BIND
- Interface
- 자바스크립트
- 함수
- ES6
- react
- 모던
- Number
- todolist
- Today
- Total
목록2022/06 (6)
홍준혁
오늘의 주제는 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에서 테스트를 하는 방법을 알아보도록 하겠습니다. HLOG를 개발하면서 테스트의 중요성을 깨닫게 되었는데요, 가장 중요한 이유는 사람은 언제나 실수를 한다는 점입니다. 사람은 완벽하기 않기 때문에 하나하나 테스트를 하게 되면 굉장히 귀찮은 작업이 될 수 있습니다. 또한, 테스트 과정에서 놓치는 부분이 있을 수도 있죠. 그래서 이러한 테스트 코드를 자동화를 시켜 검증 단계에서 실수할 여지를 줄여주는 것이 중요하다고 생각하게 되었습니다. 두 번째로, 리펙터링을 하는 데 있어서 굉장히 유용하다고 생각하게 되었습니다. 리펙터링이란, 코드의 기능은 바꾸지 않으면서 내부 구조를 개선하는 작업을 의미하는데요, 이러한 작업이 필요한 이유는 유지보수에 용이하기 때문입니다. 그래서 테스트 코드로 케이스를 작성한 ..