next.js 为什么路由处理程序中的数据未更新?

nhjlsmyf  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(147)

我正在测试下一个next 13.4.4中的新路由处理程序时,偶然发现了一个问题。数据根本不会更新,所以如果我更改NextResponse的文本,app/page.js上显示的数据保持不变。下面是代码:

async function getTodos() {
  const res = await fetch('http://localhost:3000/api');

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

  return res.json();
}

export default async function Home() {
  const todos = await getTodos();

  return (
    <main className='bg-neutral-900 text-white min-h-screen'>
      <div className="container mx-auto">
        <h1>Todo App</h1>
        <pre>
          { JSON.stringify(todos, null, 2) }
        </pre>
      </div>
    </main>
  )
}

// api/route.js
import { NextResponse } from "next/server";

export async function GET() {
  return NextResponse.json({ message: "Hello 1"})
}

这里app/page.js显示的是Hello 1,这正是我想要的,但是当我将/api/route. js文本更改为'Hello 2'时,app/page.js上的文本仍然显示Hello 1。我通过访问http://localhost:3000/api测试了这个API,在那里它显示了Hello 2。我还使用VS代码扩展Thunder Client测试了它,它再次显示了Hello 2。但是app/page.js仍然不能像预期的那样工作。有人能告诉我如何解决这个问题吗?谢谢!

ifsvaxew

ifsvaxew1#

更新:只需将fetch选项设置为{ cache:'no-store' },它将正常工作。

相关问题