reactjs 在应用路由器和服务器组件中使用NextJS revalidateTag和Prisma

cyvaqqii  于 2023-08-04  发布在  React
关注(0)|答案(1)|浏览(136)

在Next 13中,是否可以使用App Router来使用revalidatePath而不进行fetch调用?我试图避免使用router.refresh()进行完全刷新,而是只刷新特定的标记。我知道这可以通过fetch实现,但是由于使用了服务器组件,在这个用例中不需要API路由。
举例来说:

import { prisma } from "@/db";

export default async function Page() {
  const addUser = async() => {
    "use server";
    await prisma.user.create({
      data: {
        email: faker.internet.email()
      }
    });
    return {
      revalidateTag: ["db"] <<<<<---------
    }
  };

  return(
    <>
      <form action={ addUser }>
        <input
          ...
        />
      </form>

      <div>{ ...up to date user data }</div>
    </>
  );
}

字符串

quhf5bfb

quhf5bfb1#

我也有同样的问题。我能找到的最好方法是在所有工作完成后在服务器操作中使用revalidatePath。

import { prisma } from "@/db";
import { revalidatePath } from 'next/cache'

export default async function Page() {
  const addUser = async() => {
    "use server";
    await prisma.user.create({
      data: {
        email: faker.internet.email()
      }
    });
         
    revalidatePath("/") //whatever path you are calling it from
  };

  return(
    <>
      <form action={ addUser }>
        <input
          ...
        />
      </form>

      <div>{ ...up to date user data }</div>
    </>
  );
}

字符串
你可以在这里了解更多:https://nextjs.org/docs/app/api-reference/functions/revalidatePath

相关问题