在Svelte 3中如何使用有条件的属性?

24

有没有更简单的方法来编写以下复选框组件:

<script>
  export let disabled = false;
</script>

{#if disabled}
  <label class="checkbox" disabled>
    <input type="checkbox" {disabled} />
    <slot></slot>
  </label>
{:else}
  <label class="checkbox">
    <input type="checkbox" {disabled} />
    <slot></slot>
  </label>
{/if}

使用 <label disabled="false"> 是不可接受的,因为Bulma有一个CSS类.checkbox[disabled]


1
找到了这篇文章,链接在这里,可能会有所帮助。 - Gangula
1个回答

52

disabled || null (or disabled || undefined) 就可以达到效果:

<label class="checkbox" disabled={disabled || null}>
  <input type="checkbox" {disabled} />
  <slot></slot>
</label>

文档中得知:

... 属性会被包含,除非它们的值为nullishnullundefined)。

<input required={false} placeholder="This input field is not required">
<div title={null}>This div has no title attribute</div>

3
在Svelte中,autofocus只有在未设置任何值时才起作用,即使是空字符串或true/false也不行。如何解决这个问题?它的原因是什么? - lukaszpolowczyk
属性包括除非它们的值为nullish(null或undefined)。是一种非常有用的切换属性的方式。 - Gangula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接