bre*_*son 3 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>
Run Code Online (Sandbox Code Playgroud)
G. *_*ter 11
可以从 componentWillLoad() 函数中的宿主元素检测插槽的使用:
hasLogoSlot: boolean;
hasMenuSlot: boolean;
@Element() hostElement: HTMLStencilElement;
componentWillLoad() {
this.hasLogoSlot = !!this.hostElement.querySelector('[slot="logo"]');
this.hasMenuSlot = !!this.hostElement.querySelector('[slot="menu"]');
}
Run Code Online (Sandbox Code Playgroud)
这可能不适用于您的问题,但如果您只想设置开槽元素的样式\xe2\x80\x94,即仅在非空插槽\xe2\x80\x94上添加边距,您可以使用伪::slotted
元素:
::slotted([slot="logo"]) {\n /* Apply styles to non-empty logo */\n}\n\n::slotted([slot="menu"]) {\n /* Apply styles to non-empty menu */\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2632 次 |
最近记录: |