프론트엔드에서 테스트는 어떻게 진행할까?
·
React
프론트엔드 테스트는 왜 필요할까?버튼 하나의 조건을 바꿨는데 모달이 열리지 않을 수 있고, API 응답 구조가 조금 바뀌었는데 리스트가 렌더링되지 않을 수 있습니다. 또는 로그인 여부에 따라 보여야 할 페이지가 잘못 노출될 수도 있습니다.특히 React 프로젝트에서는 컴포넌트가 많아질수록 상태, props, API, 라우팅, 전역 상태가 복잡하게 연결됩니다. 이때 테스트가 없으면 기능을 수정할 때마다 직접 브라우저를 열고 모든 경우를 손으로 확인해야 합니다.테스트 코드는 이런 과정을 자동화해 줍니다.예를 들어 다음과 같은 상황을 코드로 검증할 수 있습니다.사용자가 검색어를 입력한다.검색 버튼을 클릭한다.API 응답이 도착한다.검색 결과 목록이 화면에 표시된다.이 흐름이 테스트로 작성되어 있다면, 이후 코..
폴더 구조와 아키텍처에 대해서 알아보자!
·
React
폴더 구조 & 아키텍처프론트엔드 프로젝트가 작을 때는 보통 components, hooks, utils, api, pages 정도로 폴더를 나눠도 큰 문제가 없습니다. 하지만 기능이 많아지고, 로그인, 게시글, 댓글, 마이페이지, 관리자 기능, 실시간 알림, 검색, 필터링 같은 도메인이 늘어나면 문제가 생기기 시작합니다.예를 들어 components 폴더 안에 UserCard, PostCard, CommentItem, AdminTable, LoginForm, ProfileEditModal 같은 파일이 계속 쌓이면, 이 컴포넌트가 어느 기능에 속하는지 알기 어려워집니다. hooks 폴더도 마찬가지입니다. useUser, usePost, useAuth, useModal, useDebounce, useInfi..
에러 핸들링 & 안정성 - 프론트엔드 에러 처리
·
React
프론트엔드에서도 에러처리가 필요하다 서비스를 운영하기 위해 백엔드의 지원은 필수적이지만, 만일 백엔드 서버가 아프거나, 네트워크 상황이 좋지 않아 제대로 통신이 이루어지지 않았을 때, 에러처리가 필요하다. 만일 단순한 API를 요청이 실패하여 에러가 발생했을 경우, 그 에러로 인해 서비스 전체가 죽어버린다면 큰 손실이 발생할 것이다.이러한 일이 발생하지 않도록 에러 핸들링과 안정성을 관리하는 방법을 알아보자. 발생할 수 있는 에러 상황에는 어떤 것이 있을까?에러처리를 하기에 앞서 어떤 상황에서 에러가 발생하는지에 대해서 먼저 알아보고 싶었다. 다양한 에러 상황 요약 :- 데이터에서 시작되는 에러- 네트워크와 API에서 발생하는 에러- 사용자 행동에서 발생하는 에러- 비동기 처리에서 발생하는 에러- 렌더링..
Profiler부터 memo까지 제대로 사용해보자!
·
React
React 렌더링 최적화 실전 - Profiler부터 memo까지 제대로 사용해보자!React에서 성능 최적화를 이야기할 때 가장 많이 나오는 키워드는 useMemo, useCallback, React.memo입니다.하지만 이들을 어떻게 올바르게 적용할 수 있을까요?중요한 것은 어디가 느린지 먼저 확인하고, 그 원인을 분석한 뒤 필요한 부분에만 최적화를 적용하는 것입니다. 이 글에서는 React DevTools Profiler와 memo를 사용하여 불필요한 렌더링을 찾아 최적화하는 방법에 대해서 알아보겠습니다!React에서의 렌더링의 조건React useState 완전 이해하기에서 state에 관련된 렌더링 조건에 대해서만 다뤘습니다. React 컴포넌트는 다음 네 가지 상황에서 렌더링됩니다.state가..
TanStack Query 에 대해서 알아보기!
·
React
왜 TanStack Query를 사용해야 할까요?TanStack Query는 React 애플리케이션에서 서버 상태(Server State) 를 효율적으로 다루기 위한 라이브러리입니다.예전에는 React Query라는 이름으로 많이 알려져 있었고, v4부터 TanStack Query로 이름이 바뀌었습니다. React에서 상태는 크게 두 가지로 나눌 수 있습니다.하나는 사용자 입력, 모달 열림 여부, 탭 상태처럼 프론트엔드 내부에서 직접 관리하는 클라이언트 상태이고,다른 하나는 서버에서 받아오고, 다시 동기화해야 하며, 시간이 지나면 낡을 수 있는 서버 상태입니다. 서버 상태는 다음과 같은 특징을 가집니다 :비동기다 (요청 → 응답 기다림)실패할 수 있다여러 컴포넌트에서 공유된다시간이 지나면 낡는다 (sta..
상태 관리 전략 비교 - Context API, Zustand, Redux Toolkit 중 무엇을 선택해야 할까?
·
React
상태 관리 전략 비교 - Context API, Zustand, Redux Toolkit을 어떻게 선택해야 할까?React를 공부하다 보면 어느 순간부터 단순히 컴포넌트를 만드는 것보다 더 중요한 고민을 하게 됩니다. 바로 상태를 어떻게 관리할 것인가에 대한 고민입니다. 처음에는 useState만으로도 충분합니다. 입력값을 관리하고, 버튼 클릭 여부를 저장하고, 모달 열림 여부를 제어하는 정도라면 지역 상태만으로도 큰 문제가 없습니다. 하지만 프로젝트 규모가 점점 커지고, 여러 컴포넌트가 같은 데이터를 함께 사용해야 하는 순간이 오면 이야기가 달라집니다. 이때부터는 단순히 상태를 저장하는 것을 넘어, 어떤 상태를 어디에 두어야 하는지, 어떤 도구를 선택해야 유지보수가 쉬운지, 그리고 전역 상태와 서버 상..
React useState 완전 이해하기
·
React
useState 완전 이해하기 - 렌더링을 제어하는 상태 관리의 본질React에서 useState는 가장 기본적인 Hook이지만, 단순한 상태 저장 도구로 이해하기에는 부족한 개념입니다.useState는 값을 저장하는 기능을 넘어서, 렌더링을 제어하는 핵심 메커니즘입니다.이번 글에서는 useState의 동작 방식과 함께, 실제 개발에서 반드시 이해해야 할 포인트들을 중심으로 살펴보겠습니다.렌더링이란 무엇인가먼저 설명을 진행하기 전에 렌더링이 무엇인지에 대해서 알고가면 훨씬 이해가 쉬워질 것입니다.따라서 렌더링이란 무엇인지에 대해서 먼저 짚고 넘어가겠습니다. React에서 렌더링이란,현재 state와 props를 기반으로 UI를 계산하는 과정을 의미합니다. 조금 더 구체적으로 보면 렌더링은 다음과 같은 흐..
React Hook 완전 이해하기
·
React
React Hook 완전 이해 - 단순한 함수가 아닌 React의 핵심 인터페이스React를 사용하다 보면 자연스럽게 useState, useEffect, useRef와 같은 Hook을 접하게 됩니다.대부분의 개발자는 Hook을 각각의 기능 단위 API로 이해하고 사용합니다. 예를 들어 useState는 상태 관리, useEffect는 사이드 이펙트 처리, useRef는 DOM 접근을 위한 도구라고 생각하는 경우가 많습니다. 이러한 이해 방식은 초반에는 큰 문제가 되지 않지만,일정 수준 이상의 복잡한 상태 관리나 렌더링 최적화를 다루게 되면 한계에 부딪히게 됩니다. Hook을 단순히 기능으로만 이해할 경우, 언제 어떤 Hook을 사용해야 하는지에 대한 기준이 흐려지고 불필요한 useEffect 사용이나 ..