我可以使用开槽的组件来显示其他组件吗?

时间:2018-12-19 12:20:43

标签: svelte

你好,我正在使用_layout将我的应用划分为这样的部分

_layout.html

    <div class="container"> <-- creates a 12 column grid
      {#if $user} 
        <Header /> <-- spans the first row of the 12 columns
        <Menu segment={child.segment}/> <-- spans the first 2 columns of the remaining rows
        <Content slot={child.component}/> <-- spans the other 10 columns
      {:else}
        <Login /> 
      {/if}
    </div>

这就是我要实现的目标 enter image description here

当前,我使用内容组件中的svelte生命周期钩子将“要显示的组件”手动设置到插槽中,但是由于路径不包含要显示的组件,因此这感觉很错误

<content>
  <slot>
    {#if dashboard}
      <Dashboard />
    {:elseif users}
      <Users />
    {/if}
  </slot>
</content>

<script>
  var dashboard, users = false;

   export default {
     oncreate() {
       this.dashboard = true;
     },
     ...

感觉像我应该通过路由'/'和'/ users'包含组件,而内容组件应该只显示child.component

1 个答案:

答案 0 :(得分:0)

根据Svelte文档“插槽可以包含任何内容”

在我的示例中,根本不需要插槽,我只需要包括组件并控制每个组件都有一个变量即可。

我想这篇文章的重点是:即使一个插槽可以包含任何东西,也不意味着它应该包含任何东西。