javascript Next.js应用文件夹:是否有一些“入口点”?直接替换_app.tsx?

oxiaedzo  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(116)

以前我有一个自定义的_app.tsx,它为我的应用程序做了一些引导:useEffect(() => void defineCustomElements(), []);它加载了自定义元素/Web组件,并确保它们可以被水合。
我应该把这个效果放在哪里呢?现在的应用程序路由器1.没有一个“全局”_app.tsx,其次是“服务器组件优先”?

gudnpqoy

gudnpqoy1#

正如你在Upgrade Guide上看到的,pages/_app.jspages/_document.js已经被一个app/layout.js根布局所取代”。所以如果你想在其中包含一个useEffect,你可以把你的逻辑放在那里,让它成为一个客户端组件。但是如果你不想让你的根布局成为一个客户端组件,你可以这样做:

// DefineCustomElements.js

"use client";

export default function DefineCustomElements() {
  useEffect(() => defineCustomElements(), []);

  return <></>;
}
// app/layout.js

import DefineCustomElements from "./DefineCustomElements";

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <DefineCustomElements />
      <body>{children}</body>
    </html>
  );
}

相关问题