之前我有一个自定义的_app.tsx
,为我的应用程序做了一些引导:useEffect(() => void defineCustomElements(), []);
它加载自定义元素/web组件,并确保它们可以水合。
我现在应该把这个效果与应用路由器放在哪里?没有"全局"_app.tsx
和其次是"服务器组件第一"?
在升级指南页面上,他们说"pages/_app.js
和pages/_document.js
已被替换为单个app/layout.js
根布局">。
所以在你的情况下,你可以把你的逻辑在那里,使它成为一个客户端组件与"use client"
在顶部,如果你想客户端交互像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">
<body>
<DefineCustomElements />
{children}
</body>
</html>
);
}