suspense
[Next.js] App Router / 서버 컴포넌트 주요 내용 정리
[Next.js] App Router / 서버 컴포넌트 주요 내용 정리
2024.06.01App Router vs Page Router기능앱 라우터페이지 라우터라우팅 타입서버 중심클라이언트 사이드서버 컴포넌트 지원OX복잡도더 복잡함더 간단함성능더 좋음더 나쁨유연성더 유연함덜 유연함파일 기반 라우팅중첩 폴더를 사용해 라우트 정의파일이 직접 라우트를 나타냄컴포넌트 기본적으로 서버 컴포넌트기본적으로 클라이언트 컴포넌트데이터 페칭fetch 함수 사용getServerSideProps, getStaticProps, getInitialProps 사용레이아웃레이아웃 중첩 / 동적 레이아웃정적 레이아웃동적 라우트지원하지만 문법 다름Link 컴포넌트로 지원우선순위페이지 라우터보다 우선앱 라우트가 없을 경우 대체 서버 컴포넌트Next.js 버전 13~부터 제공하는 App Router를 사용하면 서버 컴포넌트가 ..
[React] Proxy를 활용한 Custom Lazy Import
[React] Proxy를 활용한 Custom Lazy Import
2024.05.24React.lazy()React에서 코드 분할을 목적으로(Chunk 분리) 컴포넌트를 Dynamic Import 할 때 React.lazy() 함수를 사용한다. 컴포넌트가 필요한 시점에만 로드되기 때문에, 로딩 중 표시할 컴포넌트나 메시지는 를 활용하여 설정한다. 여러 개의 lazy 컴포넌트를 묶어서 fallback을 한 번에 표시할 수도 있다. 또한, React.lazy()로 불러오려는 컴포넌트는 기본적으로 default export를 사용해서 내보내야 한다.// Child.tsxexport default function Child() { /* ... */ }// Parent.tsximport { Suspense } from 'react';// 컴포넌트 바디에서 호출하면 정상 작동하지 않으므로 주의co..
[React] 대수적 효과 Algebraic Effect
[React] 대수적 효과 Algebraic Effect
2024.05.18TL;DR정의부수 효과를 추상화하는 방식 중 하나부수 효과를 발생시키는 연산(Effect)과 그 연산을 처리하는 핸들러(Effect Handler)로 구성코드 관리 방식코드 조각을 감싸는 맥락(context)으로 책임 분리특정 컴포넌트를 감싸는 부모 컴포넌트에게 역할 위임React에서 대수적 효과 — Suspense, ErrorBoundary로딩 UI, 에러 표시 역할을 특정 컴포넌트로 감싸는 형태로 분리자식 컴포넌트에서 발생한 부수 효과를 부모 컴포넌트에서 캐치하고 처리대수적 효과의 장점순수하지 않은 동작에 대한 책임 분리선언적(declarative) 코드 작성 가능What과 How를 분리하여 코드 가독성과 유지보수성 향상 대수적 효과란?대수적 효과는 부수 효과를 다루는 방식 중 하나로, 부수 효과를 ..
[React] 리액트 Suspense 톺아보기
[React] 리액트 Suspense 톺아보기
2024.05.06React v18 버전부터 Suspense를 공식적으로 지원한다. Suspense는 컴포넌트 렌더링에 필요한 특정 작업이 완료되지 않았음을 React에게 알려주는 매커니즘이다. 이 특정 작업은 여러가지가 있겠지만 Data Fetching 같은 비동기 작업인 경우가 가장 많다. Suspense를 이용하면, 데이터를 다 불러오지 못한 컴포넌트의 렌더링을 잠시 중단시키고 Loading 화면 같은 다른 컴포넌트를 먼저 보여주도록 할 수 있다. 💡 Suspense는 React Query, SWR 같은 Data Fetching 라이브러리와 함께 사용할 수 있도록 설계됐다. Data Fetching 라이브러리에선 옵션 인자를 전달하는 방식으로 Suspense 기능을 활성화 할 수 있다. 예를들어 useSWR에선 세..