NextJS生产不刷新数据

cczfrluj  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(151)
  • 当我刷新我的localhost页面,新添加到数据库的数据是可见的
  • 当我刷新生产页面时,数据不会更新(部署时相同)

我不知道为什么数据不被重新加载到生产上。使用NextJS APP文件夹,Prisma,部署throw Vercel,Planetscale作为数据库。它看起来像web是一个缓存。如何使它工作?

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();

async function getFighters() {
    const fighters = await prisma.fighter.findMany({
        where: {
            fightBlue: null,
            fightRed: null
        }
    });
   
    return fighters;
}

async function UsersPage() {     
    const fighters = await getFighters()

    return (...);
}

export default UsersPage;

字符串

更新:新增

export const dynamic = 'force-dynamic'


当页面刷新(F5)时,帮助重新加载数据。当我点击导航栏中的链接时,它不会重新加载数据。这种情况下,我应该使用一些阶段管理库,如Redux吗?

g6ll5ycj

g6ll5ycj1#

我最近也遇到了类似的问题。
默认情况下,Next.js静态呈现每个路由,为了克服这种行为,您需要显式地将组件声明为动态组件

export const dynamic = 'force-dynamic'

字符串
这确保了组件总是在被请求时动态呈现,这意味着Prisma调用应该再次运行,每次刷新时都会获取新数据。

m528fe3b

m528fe3b2#

尝试revalidatePath并验证next.js的参数。

import { revalidatePath } from "next/cache";

const baseURL = process.env.BASE_URL

async function getArticles() {
  try {
  const response = await fetch(`${baseURL}home`, {
    next: {
      revalidate: 0,
    },
  });
  const path = baseURL + 'home'
  revalidatePath(path)
  return response.json();
  } catch (error) {
    console.log(error)
  }
}

字符串
如果要缓存数据,您可能需要将validate value设置为n秒。将其设置为零意味着选择退出缓存。

相关问题