【问题标题】:How to access named slots inside svelte component?如何访问 svelte 组件中的命名插槽?
【发布时间】:2018-06-01 14:06:05
【问题描述】:

我正在尝试 Svelte(太棒了!),但我遇到了一个我不知道如何解决的问题。我有一个带有几个命名插槽的组件。根据这些插槽是否被填满,我需要渲染一些额外的 HTML。所以我的想法是将这些块放在{{#if slots}} 块中,但我不知道如何引用命名的插槽。在oncreate 中尝试this.options.slots,我可以看到插槽的集合,但我不知道如何在组件的HTML 部分中找到它们。任何人都可以帮助我吗? See this REPL

【问题讨论】:

  • 嗯,this.set() 应该可以解决问题。傻我...

标签: javascript slots svelte


【解决方案1】:

Elco 已经找到了答案并在评论中提到了它,但对于遇到此问题的任何其他人来说 - 这有点 hacky,但你可以在 oncreate 钩子中执行 this.set(...)

oncreate () {
  this.set({
    hasEmail: !!this.options.slots.email
  });
}

Demo here.

【讨论】:

  • 感谢 Rich(非常感谢您在 svelte 和 sapper 上所做的出色工作),我对这些命名插槽还有另一个问题:我想放置这样的自定义组件 <MTitle slot="title">Title here</MTitle> 但是不起作用。我必须做<span slot="title"><MTitle>Title here</MTitle></span>,这当然不是很优雅。有没有办法解决这个问题?
  • 目前没有。可以想象,我们将来可以支持开槽组件,但不幸的是,目前只支持开槽元素。
  • 请务必这样做!
猜你喜欢
  • 2019-09-29
  • 2021-07-08
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 2020-07-21
  • 2021-10-16
  • 2021-07-20
  • 2021-08-25
相关资源
最近更新 更多