nextjs-data-fetching
Fetch API, Caching, and Revalidation strategies.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Data Fetching (App Router)
Priority: P0 (CRITICAL)
Fetch data directly in Server Components using async/await.
Fetch API Extensions
Next.js extends the native fetch API for granular caching control.
-
Static (Default):
fetch('https://api.com')->cache: 'force-cache'. Built at build time. -
Dynamic:
fetch('...', { cache: 'no-store' }). Fetched on every request. -
Revalidated (ISR):
fetch('...', { next: { revalidate: 60 } }). Cached for 60s.
Patterns
-
Colocation: Fetch data where it's used. Next.js automatically deduplicates requests for the same URL in the same render pass.
-
Parallel: Use
Promise.all()to prevent waterfalls.const [user, posts] = await Promise.all([getUser(), getPosts()]); -
Blocking: To prevent UI blocking, wrap the component in
<Suspense>and stream the result.
Revalidation
-
Path:
revalidatePath('/blog/[slug]')- Purges cache for specific route. -
Tag:
revalidateTag('collection')- Purges all fetches tagged withnext: { tags: ['collection'] }.
Client-Side Fetching (Live Data)
Server Components are the default, but for live/user-specific data that doesn't need SEO:
-
SWR / TanStack Query: PREFERRED over
useEffect. Handles caching, polling, and deduplication automatically.'use client'; import useSWR from 'swr'; // Good: "Stale-While-Revalidate" - Fast UI, then updates const { data } = useSWR('/api/user', fetcher); -
Anti-Pattern: Do not use
useEffectto fetch data if you can avoid it. It causes "Flash of Loading Content" and waterfalls.
Anti-Patterns
-
API Routes: Don't fetch your own API Routes (
/api/...) from Server Components. Call the DB/Service function directly.
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!