Next.js 14 带来了全新的数据处理范式,特别是在服务端组件和数据获取方面有了重大改进。今天,我们就来深入探讨如何在 Next.js 14 中进行高效的数据处理和状态管理。
Server Components 数据获取
1. 基础数据获取
Next.js 14 提供了多种数据获取方式,默认在服务端组件中执行:
// app/posts/page.tsx
async function getPosts() {
// 默认缓存 GET 请求
const posts = await fetch('https://api.example.com/posts');
// 强制重新获取数据
const dynamicData = await fetch('https://api.example.com/stats', {
cache: 'no-store'
});
// 增量静态再生成(ISR)
const revalidatedData = await fetch('https://api.example.com/content', {
next: { revalidate: 3600 } // 1小时后重新验证
});
return {
posts: await posts.json(),
stats: await dynamicData.json(),
content: await revalidatedData.json()
};
}
export default async function PostsPage() {
const { posts, stats, content } = await getPosts();
return (
<div>
<Stats data={stats} />
<PostList posts={posts} />
<Content data={content} />
</div>
);
}
2. 并行数据请求
// app/dashboard/page.tsx
async function DashboardPage() {
// 并行发起多个请求
const [users, orders, analytics] = await Promise.all([
fetch('https://api.example.com/users').then(res => res.json()),
fetch('https://api.example.com/orders').then(res => res.json()),
fetch('https://api.example.com/analytics').then(res => res.json())
]);
return (
<div className="dashboard">
<UserStats data={users} />
<OrderList orders={orders} />
<AnalyticsChart data={analytics} />
</div>
);
}
3. 流式数据加载
// app/feed/page.tsx
import { Suspense } from 'react';
async function SlowComponent() {
const data = await fetch('https://api.example.com/slow-data');
return <SlowDataView data={await data.json()} />;
}
export default func

最低0.47元/天 解锁文章
1510

被折叠的 条评论
为什么被折叠?



