我正在测试下一个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
仍然不能像预期的那样工作。有人能告诉我如何解决这个问题吗?谢谢!
1条答案
按热度按时间ifsvaxew1#
更新:只需将fetch选项设置为{ cache:'no-store' },它将正常工作。