프론트엔드/React 17

[React] Recoil에 대해

오늘은 다양한 React 상태 관리 라이브러리 중 Recoil에 대해 알아보겠습니다. [React] 상태 관리 라이브러리, 어떤 것을 선택해야 할까?React로 애플리케이션을 개발하다 보면 상태 관리는 필수적인 과제입니다. 현재 사용되고 있는 React 상태 관리 라이브러리는 제일 많이 사용하는 Redux를 시작으로, Zustand, Jotai, Recoil, Context API, Reami-dairy.tistory.com  1. Recoil이란?Recoil은 페이스북에서 개발한 React 상태 관리 라이브러리로,기존의 전역 상태 관리 라이브러리에 비해 간단하고 직관적인 API를 제공하면서도,React Suspense와의 호환성, 동시성 모드 지원 등의 특징을 갖추고 있습니다. 여러 컴포넌트가 공유해야..

[React] 내부 API로 편하게 전역 상태 관리하기, Context API

오늘은 다양한 React 상태 관리 라이브러리 중 Context API에 대해 알아보겠습니다. [React] 상태 관리 라이브러리, 어떤 것을 선택해야 할까?React로 애플리케이션을 개발하다 보면 상태 관리는 필수적인 과제입니다. 현재 사용되고 있는 React 상태 관리 라이브러리는 제일 많이 사용하는 Redux를 시작으로, Zustand, Jotai, Recoil, Context API, Reami-dairy.tistory.com  React에서 부모 → 자식 → 자식의 자식... 순으로 데이터를 전달할 때 보통 props를 사용합니다.하지만 이 방식은 트리 구조가 깊어질수록 문제가 발생할 수 있습니다.데이터를 실제로 사용하지 않는 중간 컴포넌트들까지도 props를 계속 물려주어야 하는, Props ..

[React] 상태 관리 라이브러리, 어떤 것을 선택해야 할까?

React로 애플리케이션을 개발하다 보면 상태 관리는 필수적인 과제입니다. 현재 사용되고 있는 React 상태 관리 라이브러리는 제일 많이 사용하는 Redux를 시작으로, Zustand, Jotai, Recoil, Context API, React Query 등 다양합니다. 상태 관리 라이브러리를 선택하기에 앞서, 이런 생각이 들 수도 있습니다. “어차피 Redux가 제일 많이 쓰이니까 그냥 Redux를 사용하면 되지 않을까?”  물론 Redux는 가장 널리 사용되는 상태 관리 라이브러리 중 하나입니다. 그러나 Redux에도 단점이 존재하며, 모든 상황에서 적합한 것은 아닙니다.따라서 본인의 프로젝트와 요구 사항에 적합한 상태 관리 라이브러리를 선택하는 것이 더 중요합니다. 그래서 오늘은 React의 다..

[React] 서버에서 상태를 가져온다고? React-Query

Recoil, Redux, Zustand와 같은 상태 관리 라이브러리를 두고 왜 React Query를 사용하는 것일까?React Query를 사용하는 이유는, 서버 상태를 효율적이고 일관되게 관리하기 위해서이다. React 자체는 클라이언트 상태를 다루는 데는 강력하지만,서버에서 데이터를 가져오고 이를 유지, 갱신, 캐싱하는 등의 기능은 기본적으로 제공하지 않기 때문에 별도의 도구가 필요하다. React Query는 이러한 서버 상태를 자동으로 관리해 주는 훌륭한 라이브러리이며,React Query를 사용하면 데이터를 요청할 때마다 수동으로 로딩 상태, 에러 처리, 데이터 갱신 등을 구현하지 않아도 된다. 내부적으로 자동 캐싱, 요청 중복 제거, 실패 시 재시도, 포커스 복귀 시 자동 리페치 등의 기능..

[React] Zustand쓰면 Redux 이제 못 씀, Zustand 파헤치기

React는 여러 개의 컴포넌트로 구성되어 웹 페이지를 만든다.이렇게 컴포넌트를 나누다 보면, 컴포넌트 간에 상태(변수)를 공유해야 하는 상황이 자주 발생하는데,이때 보통 props, Context API, 혹은 Redux와 같은 상태 관리 도구를 사용한다. 그중 Redux는 가장 널리 알려진 상태 관리 라이브러리로, 전역 상태를 정의하고 이를 여러 컴포넌트에서 공유할 수 있게 해준다.하지만 Redux는 초기 설정이 복잡하고, 문법이 다소 어렵다는 단점이 있다. 그래서 최근에는 Redux와 비슷한 기능을 제공하면서도, 더 간단하고 직관적인 API를 가진 상태 관리 도구들이 많이 사용된다.그 중 하나가 바로 Zustand이다. 이번 글에서는 Redux와 비슷한 기능을 제공하면서도 훨씬 사용하기 쉬운 Zus..

[React] 사용자에게 빠른 UI 반응을 제공하려면? Web Worker, Debounce, Throttle

UI 응답성을 개선하기 위한 성능 최적화 기법에는 Web Worker과 Debounce, Throttle가 있다.적용 대상과 역할이 조금 다르기 때문에 이 글을 읽고, 상황에 맞게 적용해 성능을 개선해보자! 1. Web Worker (웹 워커)무거운 연산이나 백그라운드 작업을 별도의 스레드에서 수행하는 기법을 말한다.JS는 싱글 스레드라 무거운 연산이 메인 스레드를 막아 UI 렌더링이 멈출 수가 있기 때문에 웹 워커는 별도의 스레드에서 작업 수행시켜 메인 스레드의 부하를 줄여 UI의 렌더링이 끊기지 않도록 유지하기 위해 사용한다. 1.1 사용 예시// App.jsfunction heavyCalculation(n) { let result = 0; for (let i = 0; i { const r..

[React] 초기 로딩 속도가 느리다면? 성능 최적화!!

React 환경에서 성능을 개선하는 방법은 다양하게 있다.그 중 번들 크기를 감소시켜 초기 로딩 속도를 최적화 하는 방법 몇 가지를 자세하게 알아보자. 1. Tree Shaking사용되지 않는(dead) 코드를 제거하여 최종 번들 크기를 줄이는 기법이다.불필요한 코드를 제거해 번들 크기를 축소하고, 로딩 시간을 단축시키기 위해 사용한다. 1.1 사용 예시import _ from 'lodash'; // lodash 전체를 가져옴function MyComponent() { const arr = [1, 2, 3]; const newArr = _.shuffle(arr); // 실제로는 shuffle 함수만 필요 return {newArr.join(',')};}export defaul..

[React] DOM?? Virtual DOM??

Virtual DOM은 React를 공부하면 자주 들을 수 있는 용어입니다.Virtual DOM에 대해 자세히 알아보기 전, 먼저 DOM에 대해 알아보겠습니다.  1. DOM (Document Object Model)사용자가 브라우저를 통해 어떤 웹사이트에 접속하면 버튼, 리스트, 제목 등 다양한 요소가 화면에 표시됩니다.이러한 개별 요소를 Element라고 하며, 이 모든 요소를 포함하는 웹페이지 전체를 문서, 즉 Document라고 합니다.  브라우저는 웹페이지의 HTML을 해석하여 이를 화면에 렌더링합니다.이때 DOM이란 웹페이지의 HTML 요소(Element)들을 트리 형태의 구조로 표현한 것입니다.DOM은 자바스크립트 객체는 아니지만 API를 가지고 있기 때문에 자바스크립트 조작이 가능합니다. ..

[React] 라이프사이클(Lifecycle)에 대해서

React Component의 라이프사이클(Lifecycle)이란?컴포넌트가 생성 - 업데이트 - 제거되는 과정을 의미한다. React에서는 컴포넌트가 이 과정을 통해 초기화되고 데이터가 변경될 때 다시 렌더링되며 필요할 때 제거된다. 라이프사이클은 각각의 단계에서 특정 메서드를 호출하여 필요한 작업을 수행할 수 있게 한다.주로 클래스형 컴포넌트에서 사용했으나 React 16.8 이후로 함수형 컴포넌트에서 Hooks를 통해 라이프사이클을 처리할 수 있게 되었다.React 라이프사이클은 컴포넌트가 언제 생성되고 업데이트되고 제거되는 지를 이해하는 데 매우 중요하다. React Lifecycle 단계React 컴포넌트의 라이프사이클은 크게 세 가지로 나눌 수 있다.마운트 (Mount) : 컴포넌트가 처음 D..

[React] 함수형 컴포넌트와 클래스형 컴포넌트

React에서 컴포넌트는 사용자 인터페이스를 구축하는 기본 블록을 말한다.컴포넌트는 크게 함수형 컴포넌트와 클래스형 컴포넌트로 나눌 수 있다. 1. 함수형 컴포넌트 (Functional Component)자바스크립트 함수로 정의된 컴포넌트를 말한다.특징상태(state)와 생명주기 메서드가 없었으나 React 16.8에서 도입된 Hooks를 사용하여 함수형 컴포넌트에서도 상태 관리와 생명주기 관련 기능을 사용할 수 있다.코드가 더 간결하고 이해하기 쉽다.사이드 이펙트 없이 순수 함수처럼 사용될 수 있다.this 키워드를 사용하지 않는다.컴포넌트 로직을 분리하기 쉽고 테스트가 용이하다.메모리 사용이 더 효율적이다.예시import React from 'react';const MyComponent = (prop..