_layout.svelte如何知道它是否在错误页面中?

时间:2019-10-19 11:14:39

标签: svelte sapper

主页和错误页面的segment中的_layout.svelte变量均为undefined。我想为这些页面呈现不同的页面,但无法在_layout.svelte中找到一种方法。

2 个答案:

答案 0 :(得分:0)

Sapper 0.27.9版本开始,这是不可能的。

但是,有一种解决方法。

进入您的项目,然后在此路径下编辑文件

[project-name]/node_modules/sapper/runtime/app.mjs

转到handle_error函数,然后寻找const props = {...

segments: preloaded键:值更改为segments: ['_error']

现在转到hydrate_target函数

const segments = page.path.split('/').filter(Boolean);更改为

const segments = page.path === '/' ? ['index'] : page.path.split('/').filter(Boolean);

完成此操作后,请使用npm run dev启动应用,然后segment应该是_errorindex而不是undefined,具体取决于您正在浏览的页面。

答案 1 :(得分:0)

由于Sapper 0.28.9,可以在$page.error中使用_layout.svelte

<script>
  import { stores } from '@sapper/app';
  const { page } = stores();
</script>

{#if !$page.error}
  <!-- error pages sit outside of the default layout-->
  <slot />
{:else}
  <fancy-layout>
    <slot />
  </fancy-layout>
{/if}