Next.js 14 数据处理:从服务端组件到状态管理的最佳实践

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值