You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13.4.4 Route Handlers数据不更新问题求助

解决Next.js 13.4.4 Route Handlers修改后页面数据不更新的问题

问题原因

在Next.js 13+的App Router中,页面组件默认采用静态渲染,fetch请求会自动被缓存。这意味着页面会在首次加载时获取API数据并缓存,后续即使API响应更新,页面仍会读取缓存内容,导致显示旧数据。而直接访问API或用工具测试时,请求不会经过页面的缓存逻辑,所以能看到最新响应。

解决方法

1. 给fetch请求添加缓存控制

修改getTodos函数里的fetch调用,通过配置选项禁用缓存,强制每次请求都获取最新数据:

async function getTodos() {
  const res = await fetch('http://localhost:3000/api', {
    // 二选一即可
    cache: 'no-store', // 完全禁用缓存
    // next: { revalidate: 0 } // 等同于no-store,强制动态获取
  });

  if (!res.ok) {
    throw new Error("Couldn't fetch data");
  };

  return res.json();
}

2. 配置页面为动态渲染

在app/page.js顶部添加dynamic配置,让整个页面变为动态渲染,每次请求都会重新执行组件内的数据获取逻辑:

// app/page.js 顶部添加
export const dynamic = 'force-dynamic';

async function getTodos() {
  // 原有代码不变
}

export default async function Home() {
  // 原有代码不变
}

3. 开发环境临时解决

如果只是开发测试时遇到,可尝试:

  • 强制刷新页面(按Ctrl+F5/Cmd+Shift+R)
  • 重启开发服务器(停止npm run dev后重新启动)

内容的提问来源于stack exchange,提问作者user3040230424

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:42:21