web-component - StencilJS 检查命名槽是否为空

标签 web-component shadow-dom stenciljs

我有一个带有两个命名插槽的 stencilJS 组件。有没有办法确定插槽是否已分配值?例如,下面的代码片段显示了“ logo ”和“ menu ”的命名槽。如果两个命名槽都不为空,我如何检查组件内部?理想情况下,我想从组件内部和 componentWillMount() 期间进行检查。谢谢你。

  <koi-menu breakpoint="768" userToggled="false">
      <div class="logo__header " slot="logo"><img src="assets/images/logo.png" /></div>

      <ul class="nav__wrapper list mw8-ns center-m" slot="menu">
        <li class="nav__listitem"><a class="ttu nav__link" href="???">Why Live Grit</a></li>
        <li class="nav__listitem"><a class="ttu nav__link" href="???">Clients</a></li>
        <li class="nav__listitem"><a class="ttu nav__link" href="???">Our Programs</a></li>
        <li class="nav__listitem"><a class="ttu nav__link" href="???">Our Story</a></li>
      </ul>

  </koi-menu>

最佳答案

可以从 componentWillLoad() 函数中的宿主元素检测槽的使用:

hasLogoSlot: boolean;
hasMenuSlot: boolean;

@Element() hostElement: HTMLStencilElement;

componentWillLoad() {
    this.hasLogoSlot = !!this.hostElement.querySelector('[slot="logo"]');
    this.hasMenuSlot = !!this.hostElement.querySelector('[slot="menu"]');
}

关于web-component - StencilJS 检查命名槽是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092693/

相关文章:

html - 我可以通过缓存动态加载 Web 组件引用的数据吗?

typescript - stencil-component-starter 中的 ion-label 组件没有被渲染

javascript - 模具 |在组件中导入第三方脚本

javascript - 具有阴影根的元素会中断文本选择

selenium - 在影子DOM中查找元素

events - 在 Polymer 中访问数据的可靠方法(在 dom-repeat/事件处理程序中)

jestjs - Jest Expected 和 receive 是一样的

html - Google Chrome 仍然支持 HTML 导入吗?

javascript - "Illegal invocation"调用新创建的 Web 组件对象的成员时出错

css - 如何使用 `all: initial` 重置指定样式的 Web 组件?