All'alba vincerò

At dawn, I will win!

전체 글 339

[React] memo(): props가 변경되지 않으면 컴포넌트 리렌더링❌

📌 memo(): 컴포넌트의 props가 변경되지 않은 경우, 컴포넌트 리렌더링을 건너뛸 수 있는 훅성능 최적화를 위한 함수형 컴포넌트를 위한 기능컴포넌트가 불필요하게 리렌더링되는 것을 방지하는 데 사용memo는 이전과 새로운 props를 비교하여 변경이 있을 때만 컴포넌트를 리렌더링 한다.컴포넌트를 memo로 감싸면 해당 컴포넌트의 memoized 버전을 얻을 수 있다.memoized 버전의 컴포넌트는 부모 컴포넌트가 리렌더링 되어도 props가 변경되지 않았다면 리렌더링 되지 않는다.그러나 memoization는 성능을 최적화하는 것이지 보장하지 않기 때문에 React는 리렌더링 될 수도 있다. import { memo } from 'react';const SomeComponent = memo(fu..

React 2024.08.21

[React] useCallback(): 컴포넌트 리렌더링 시 불필요한 함수 생성 방지

📌 useCallback(): 컴포넌트가 리렌더링될 때, 함수가 불필요하게 다시 생성되는 것을 방지하기 위해 사용 함수의 메모이제이션(기억화)을 위해 사용하위 컴포넌트에 전달하는 속성 타입이 함수인 경우 캐싱(caching)할 때 사용리렌더링 시 함수 참조를 유지하고 싶을 때, 특히 자식 컴포넌트에 콜백 함수를 전달할 때 유용하다.해당 함수의 종속성(dependency) 배열에 지정된 값들이 변경되지 않는 한, 리-렌더링 간에 동일한 함수임을 보장하여 동일한 함수 인스턴스를 재사용할 수 있다.불필요한 함수 재생성을 방지하여, 성능 최적화에 도움이 된다.메모이제이션 된 함수가 많아지면, 관리 비용이 오히려 커질 수 있기 때문에 반드시 필요할 때만 사용하는 것이 좋다.  ⏩ useCallback 사용 이유..

React 2024.08.21

Thunder Client : REST API 요청 테스트 & 디버깅 확장 프로그램

📌 Thunder Client: REST API 요청을 테스트하고 디버깅할 수 있는 VS Code 확장 프로그램 Thunder Client - Rest API Client Extension for VS CodeThunder Client is a hand-crafted lightweight Rest API Client extension for Visual Studio Codewww.thunderclient.com  ⏩ 주요 기능REST API 요청 테스트GET, POST, PUT, DELETE 등 다양한 HTTP 요청을 쉽게 만들고 테스트할 수 있다.응답 검사API 응답을 JSON, XML 등 다양한 형식으로 확인하고, 응답 시간, 상태 코드 등을 확인할 수 있다.환경 변수환경 변수를 설정하여 개발, 테..

기타 2024.08.20

[React] useLayoutEffect(): 브라우저가 화면에 그리기 전에 실행

📌 useLayoutEffect(): 브라우저가 화면을 그리기 전에 실행되는 useEffect 브라우저가 화면을 다시 그리기 전에 레이아웃 계산 DOM이 변경된 후, 브라우저가 화면에 반영하기 전에 실행된다.👉 레이아웃이나 DOM 관련 조작에 적합👉 애니메이션 라이브러리 사용useLayoutEffect(setup, dependencies?)매개변수setup: Effect의 로직이 포함된 함수clean-up 함수를 반환할 수도 있다.컴포넌트가 DOM에 추가되기 전에 React는 setup 함수를 실행한다.dependencies가 변경되어 다시 렌더링 될 때마다, React는 (cleanup 함수를 제공했다면) 먼저 이전 값으로 cleanup 함수를 실행한 다음, 새로운 값으로 setup 함수를 실행한..

React 2024.08.20

[React] useImmer(): 상태(state)를 쉽게 관리

📌 useImmer(): React에서 상태 관리를 쉽게 할 수 있도록 도와주는 Hook React의 useState 훅과 Immer 라이브러리가 제공하는 불변 업데이트 패턴을 결합한 커스텀 React 훅 React 상태 관리를 쉽게 하고, 복잡한 상태 업데이트를 간단하게 할 수 있는 훅 중첩된 객체나 배열 상태를 업데이트할 때 유용 ❓언제 사용하면 좋은가 중첩된 구조의 상태를 자주 업데이트하는 경우 상태 업데이트 시 불변성을 유지해야 하는 경우 코드의 가독성을 높이고 싶을 때 ⏩ 장단점 장점 간단한 상태 관리 : 중첩된 객체와 배열의 상태 업데이트를 간단하게 해준다. 불변성 자동 관리 : immer가 불변성을 자동으로 관리해 주므로, 직접 불변성을 신경 쓸 필요가 없다. - 상태가 의도치 않게 변형되는..

React 2024.08.20

[React] React Router 라이브러리(1) : 싱글 페이지 애플리케이션(SPA) 구현

📌 React Router 라이브러리프로덕션용으로 사용 가능한 싱글 페이지 앱을 구현(SPA)하기 위한 React Router 라이브러리 URL이 변경돼도 싱글페이지로 렌더링 하는 기능을 지원React컴포넌트 안에 렌더링 로직 + 사이드 이펙트 로직 = 코드 복잡, 읽기 어려움, 관리 어려움React Router (v6.4+ data API : Remix Framework)컴포넌트는 순수하게 렌더링 로직 관리loader 함수는 사이드 이펙트 (서버 요청, 응답 코드 처리)  ⏩ 설치react-router-dom 패키지 설치pnpm add react-router-dom  ☑️ 라우터 생성 & 공급⏩ 컴포넌트 (라우터 공급) import { StrictMode } from 'react';import { ..

React 2024.08.20

[React] 싱글 페이지 애플리케이션(SPA): 단일 HTML 페이지 애플리케이션

📌 싱글 페이지 애플리케이션 (Single-page application, SPA): 단일 HTML 페이지로 구성된 웹 애플리케이션 처음에 한번 페이지를 로드한 후, 새로운 데이터를 요청하거나 페이지 전환을 하더라도 새로고침 없이 동적으로 필요한 데이터만 불러오는 방식사용자가 페이지 사이를 이동할 때 서버에 전체 페이지를 요청하는 것이 아니라, 기존 페이지를 유지한 채 필요한 데이터만 교체브라우저(클라이언트) 측에서 리액트를 사용해 사용자가 요청에 따른 페이지 컴포넌트를 렌더링하여 전통적인 웹 프로그램을 브라우저 단에서 처리할 수 있다. React에서 SPA를 구현할 때 주로 React Router라는 라이브러리를 사용해 라우팅을 처리 AJAX : 페이지를 변경하지 않고 동일한 페이지에서 오로지 자바스..

React 2024.08.20

[React] 데이터 패칭(Data Fetching) / 데이터 뮤테이션(Data Mutation)

📌 데이터 패칭(Data Fetching) : 외부 API나 데이터베이스 등에서 데이터를 가져오는(읽는) 작업 서버에 데이터 요청/응답 (읽기(Read)) 비동기적: 네트워크 요청은 서버에서 데이터를 가져오는 동안 비동기적으로 처리됨주로 GET 요청: 데이터 패칭은 HTTP `GET` 요청을 통해 서버에서 데이터를 조회하는 형태 API 상태 관리: 데이터 패칭 과정에서 `isLoading, data, error` 등 API 상태를 관리해야 함서버의 데이터를 가져오는 작업은 이펙트(Effect)를 사용한다.   ✅ 이펙트(Effect) 사용 API 서버에 데이터를 요청해 응답받은 데이터를 렌더링이펙트를 사용해 Promise 또는 Async / await를 사용해 데이터 가져오기를 요청데이터 가져오기 요청..

React 2024.08.19

[React] useEffect() : 렌더링 시 발생하는 사이드 이펙트 처리

📌 useEffect(): 리액트 컴포넌트와 외부 시스템을 동기화할 때 사용렌더링 자체에 의해 발생하는 부수 효과를 특정하는 것특정 이벤트가 아닌 렌더링에 의해 직접 발생한다.(어떤 상호작용과도 상관없이 발생, 커밋 단계 이후 실행 됨)React는 화면을 업데이트한 다음 useEffect 내부의 코드를 실행한다.➡️ useEffect는 화면에 렌더링이 반영될 때까지 코드 실행을 지연 시킨다.외부 시스템(external) : React에서 제어되지 않는 시스템(ex. 네트워크, 브라우저 API, 서드파티 라이브러리와의 연결, 데이터 가져오기, DOM 수정, 타이머 설정, 구독 등)ex) 서버에 접속하는 것➡︎ 순수한 계산이 아니고 부수 효과를 발생시키기 때문에 렌더링 중에는 할 수 없다❌➡︎ 이벤트도 아..

React 2024.08.18

[React] React 애니메이션 (2) - Motion One

✅ Motion One ⏩ 설치pnpm add motion   ⏩ 기능 (1) animatie(): DOM 요소 또는 집합을 쉽게 애니메이션 한다.import { animate } from 'motion';animate(target, props, options?)매개변수첫 번째 인수: 애니메이션을 적용할 DOM 요소두 번째 인수: CSS 속성 값(객체 or 배열)세 번째 인수: 애니메이션 옵션 객체props에 함수를 설정할 수 있다.animate ( element, { x: 400, rotate: 360 }, { duration: 1.5, delay: 0.5 } );};// 함수animate ( (progress) => { box.textContent = Math.round(pro..

React 2024.08.15