如何在 Svelte 3 中拥有条件属性?

bat*_*teo 9 html svelte svelte-component svelte-3

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

<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}
Run Code Online (Sandbox Code Playgroud)

拥有<label disabled="false">是不可接受的,因为布尔玛有一个 CSS 类.checkbox[disabled]

rix*_*ixo 18

disabled || undefined 似乎可以解决问题:

<label class="checkbox" disabled={disabled || undefined}>
  <input type="checkbox" {disabled} />
  <slot></slot>
</label>
Run Code Online (Sandbox Code Playgroud)

编辑:维护者已确认这是从元素中完全删除属性的正确支持方式。undefinednull应该工作。

  • Svelte 中的“autofocus”仅在没有值时才起作用 - 即使是空字符串或 true / false 也不能。怎么解决呢?它从何而来? (3认同)