如何从NextJS 13应用程序目录布局排除特定页面?



我有这样的文件夹结构:

app/view-all/layout.js
app/view-all/page.js
app/view-all/[itemId]
app/view-all/clothes
app/view-all/accessories
app/view-all/bags

所有这些都需要共享我在app/view-all/layout.js中编码的Aside组件。. 所有这些除了app/view-all/[itemId]它有自己的layout.js文件。如何使app/view-all/layout.js文件不包括/[itemId]页不改变其在结构中的位置?我似乎在nextjs的docs

中找不到任何东西

目前无法忽略布局文件。

如果我必须创建这样的系统,我会使用布局组件的可选参数参数

因为你的页面view-all/[item-id]/page提供了item-id,而view-all/page什么都不提供,所以参数会有所不同,你可以在布局组件中使用if/else来呈现你想要的每种类型的页面。

或者,我将在页面中移动属于每个页面的部分,而不是在布局中。

更多关于新的nextjs13参数布局:https://beta.nextjs.org/docs/api-reference/file-conventions/layout#params-optional

你可以使用"(foldername)"来分隔那些将被不将被包装的页面文件。在你文件夹的术语中。这不会改变你的应用的路径/URL。

app/(app)/view-all/layout.js
app/(app)/view-all/page.js
app/(product)/view-all/[itemId]/page.js
app/(app)/view-all/clothes
app/(app)/view-all/accessories
app/(app)/view-all/bags

使用"()"不会出现在导航器的路径上。你可以添加"app/(product)/view-all/[itemId]/layout.js"定制产品页面布局。我希望它能帮助你。

最新更新