NextJS构建使所有内容都是静态的问题

qxgroojn  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(168)

我是一个NextJS新手,对基本的React应用程序只有真实的的经验和理解。这是我第一次尝试部署一个基本的CRUD NextJS应用程序(使用prisma和mongoDB),当使用npm run dev时运行良好,但当使用npm run build然后使用npm run start或部署到Vercel时,网站的行为完全不同,所有功能都丢失了。
主页是一个香水列表,每个香水都有一个删除按钮。

当尝试删除这些内容或从MongoDB数据库进行更新时,在使用npm run build构建网站后,网站上的内容不会更新。

import { getFragrances } from "@/lib/prisma/fragrances";
import FragranceListItem from "./fragranceListItem";

const Fragrances = async () => {
  const { fragrances } = await getFragrances();
  const sortedFragrances = fragrances.sort((a, b) =>
    a.name.localeCompare(b.name)
  );

  return (
    <section className="fixed h-full w-full bg-gray-900">
      <div className="center py-4">
        <h2 className="mb-4 text-xl font-medium text-white">Fragrances</h2>
        <nav aria-label="Main Nav" className="flex flex-col space-y-1">
          {sortedFragrances?.map((fragrance) => {
            return <FragranceListItem fragrance={fragrance} />;
          })}
        </nav>
      </div>
    </section>
  );
};

export default Fragrances;

这段代码是相当基本的,但我很确定我需要在底部添加某种getServerSideProps函数,但我不知道如何,我已经尝试过,但它没有呈现任何东西。我错过了NextJS和服务器渲染代码中的一些基本步骤吗?SSR或ISR是我采取的正确方法吗?我目前的代码看起来会是什么样子?非常感谢所有帮助:)

u0njafvf

u0njafvf1#

npm run dev中,您使用的是开发者模式,这意味着页面将在每次更改和保存后刷新。在build mode中,页面已构建,您无法看到dev mode等更改,因此您必须在客户端使用useStateuseRef之类的东西。您还需要在客户端或服务器端使用API连接。
所以,如果你想在不刷新页面的情况下访问数据库并立即看到结果,你必须在客户端使用useEffectAPI连接,并将其保存在useState变量中。

相关问题