如何处理重置布局



我现在收到这个错误:

__layout.reset已被删除,取而代之的是命名布局:https://kit.svelte.dev/docs/layouts#named-布局

我有一个子目录,我不想继承它的基本布局。

$ find . -name '*layout*'               
./setup-profile/__layout.reset.svelte
./auth/__layout.reset.svelte
./__layout.svelte

package.json有

"@sveltejs/kit": "next",

您链接的文档页面非常不言自明。

编辑:

总的来说,更简单的方法是在包含简单<slot />的源树的根上创建一个命名的重置布局,并在您想要从重置布局开始时引用该布局:

src/routes/
├ auth/
│ ├ __layout@reset.svelte (will inherit from the reset layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ setup-profile/
│ ├ __layout@reset.svelte (will inherit from the reset layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ no-reset/
│ ├ __layout.svelte (will inherit from the base layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ __layout.svelte
└ __layout-reset.svelte

随着路由系统的发展,这已经不起作用了。

我的理解是:

  • 所有布局都继承自根布局+page.svelte
  • 但您可以创建在路线的最终路径中不考虑的组

例如,我们可以想象一个网站的布局包含一个页眉、一个主块和一个页脚块。

但我们也可能有一些弹出窗口之王,它们不是由这些块元素组成的,而是具有高z-index或类似内容的简单块。

因为所有布局都继承了根布局,所以我们可以在根处创建一个空白布局(包含单个<slot />(,然后创建一个(app)组和(popup)组(此处括号至关重要(。在每个组内部,您可以定义将由位于相应子文件夹中的所有布局继承的布局。

它会给我们以下的东西:

src/routes
├── (app)
│   ├── +layout.svelte ----> contains Header, Main, Footer etc.
│   ├── page1
│   │   └── +page.svelte
│   ├── page2
│   │   └── +page.svelte
│   ├── page3
│   │   └── +page.svelte
├── (popup)
|   ├── +layout.svelte ----> contains only popup HTML & styles
│   ├── popup
│       └── popup1
│       │   └── +page.svelte
│       └── popup2
│           └── +page.svelte
├── (test)
│   ├── +layout.svelte
│   └── test
│       ├── +layout.svelte
│       └── page.svelte
├── +error.svelte
├── +layout.svelte  ----> contains nothing or only global things
├── +page.svelte
└── api
├── user
│   └── [uid]
│         └── get.json
└── ...
...

我建议您使用(group(,这可以帮助您吗

阅读更多

根据我的测试,您需要重命名layout&文件使用布局。

例如

l2_named/
__layout-foo.svelte
level_2_named@foo.svelte

布局文件添加了-foo,文件使用布局添加了@foo

最新更新