Đi tới nội dung

Frontend & giao diện

#react

20 bài viết gắn thẻ #react trên DiCodeWeb, từ nền tảng đến production, mới nhất trước.

20 bàiCập nhật 8 thg 9, 2026

Bài viết

Server state là cache, không phải state: TanStack Query v5 chuyên sâu

Dữ liệu từ server không thuộc về bạn — bạn chỉ giữ một bản sao có hạn dùng. Bài này đi sâu TanStack Query v5 theo góc nhìn cache: thiết kế query key, staleTime và gcTime, invalidation, optimistic update có rollback, Suspense, hydration với Next.js App Router, infinite query và khi nào không nên dùng nó.

Frontend & giao diện19 phút

Mô hình tư duy đúng cho React Server Components: hai module graph, một ranh giới

"use client" không đánh dấu loại component mà đánh dấu điểm bắt đầu của client graph. Bài này dựng lại mô hình tư duy cho RSC trong Next.js 16: thứ gì đi qua ranh giới, data fetching đặt ở đâu, waterfall, streaming và những lỗi khiến bundle phình hoặc lộ dữ liệu.

Frontend & giao diện19 phút

Caching trong Next.js 16: Cache Components, use cache và Partial Prerendering thực chiến

Next.js 16 bỏ kiểu cache ngầm của App Router cũ: mọi thứ dynamic theo mặc định, bạn tự chọn chỗ cần cache bằng use cache. Bài này đi qua static shell và dynamic hole, cache key, cacheLife, cacheTag với updateTag, revalidateTag, refresh, và một trang sản phẩm e-commerce làm từ đầu đến cuối.

Hệ thống & kiến trúc26 phút

Tool calling và generative UI: khi LLM gọi code của bạn và trả về component

Tool calling thật ra là một vòng lặp do code của bạn điều khiển. Bài này đi qua cách định nghĩa tool bằng schema, agent loop có giới hạn bước, xử lý args sai, message list với part có kiểu, stream args dở dang, render tool call thành component và bắt người dùng xác nhận trước những tool có side effect.

Frontend & giao diện9 phút

View Transitions API: animation chuyển trang và shared element không cần thư viện

Cơ chế snapshot và cây pseudo-element của View Transitions, startViewTransition trong SPA, transition giữa hai document, view-transition-name, view-transition-class và types, shared element từ danh sách sang trang chi tiết, reduced motion, những bẫy hiệu năng, và cách dùng component ViewTransition của React trong Next.js 16.

Frontend & giao diện8 phút

UX pattern cho tính năng AI: thiết kế giao diện cho kết quả xác suất từ góc nhìn frontend

Cách mình thiết kế và xây UI cho những tính năng mà mỗi lần chạy lại ra một kết quả khác: ngân sách độ trễ và streaming, gợi ý có thể chấp nhận, sửa hoặc bỏ qua với state model có type, undo và preview, nguồn trích dẫn trung thực, feedback nối vào analytics, xử lý lỗi và accessibility.

Frontend & giao diện9 phút

List virtualization từ con số 0: render 100.000 dòng mà vẫn mượt

Tự tay viết một virtual list bằng React + TypeScript: toán windowing với số liệu cụ thể, overscan, chiều cao thay đổi với prefix sum và binary search, đo bằng ResizeObserver, chống giật khi scroll, accessibility — và khi nào không nên virtualize.

Hiệu năng18 phút

React Compiler trong thực tế: đưa vào một codebase đang chạy

React Compiler thực sự làm gì, các Rules of React nó dựa vào, ESLint plugin, rollout từng phần bằng annotation mode và "use no memo", xử lý useMemo/useCallback cũ, cách kiểm chứng nó chạy, các lý do bail out thường gặp, thư viện bên thứ ba và chi phí build.

Hiệu năng10 phút

Signals và fine-grained reactivity: cơ chế bên dưới và khi nào thật sự cần

Signals theo dõi dependency thế nào, vì sao push-pull cho cập nhật không bị glitch, Solid, Preact, Angular và Vue dùng chúng ra sao, đề xuất TC39 đang ở đâu, React Compiler thay đổi được gì, và những cái bẫy khi chạy production — kèm một bản cài đặt signal nhỏ bằng TypeScript.

Hệ thống & kiến trúc9 phút

Code Splitting và Lazy Loading trong React

Hướng dẫn thực tế giúp giảm lượng JavaScript tải ban đầu bằng cách kết hợp lazy loading theo route và theo component.

Hiệu năng1 phút

Form trong React 19: action, useActionState, useFormStatus và Server Actions

React 19 đưa form về gần với HTML hơn: prop action, trạng thái pending, cập nhật optimistic và Server Actions. Bài này đi qua cách mình dựng một form đăng ký đầy đủ — validate hai phía, trả lỗi theo field, accessible, và chạy được cả trước khi JavaScript tải xong.

Frontend & giao diện8 phút

State machine cho UI: loại bỏ những trạng thái không thể xảy ra

Vì sao isLoading, isError và data cùng tồn tại là mầm mống của bug, cách mô hình hoá UI bằng trạng thái và sự kiện, một state machine có type bằng useReducer cho luồng submit form, và khi nào nên dùng thư viện statechart.

Hệ thống & kiến trúc7 phút
Tất cả thẻ