if-statement - Svelte 中是否有更好的方法来包含条件 HTML 元素

标签 if-statement svelte code-duplication svelte-3

我开始经常遇到这个问题。如果 bool 值为 true,我想在其他元素周围包含一个元素。在下面的示例中,我做了两个 if 语句,但如果我想要包装的代码很大,这将使不清楚发生了什么。另外,还会有重复的代码。有没有更好的方法来解决这个问题?

<script>
   let boolean = true;
</script>

{#if}
   <img src="source" />
{/if}

{#if}
   <a href="/home">
      <img src="source" />
   </a>
{/if}

最佳答案

如果这是您经常做的事情,您可以使用 slots 创建一个 ConditionalLink 组件。 .

<!-- ConditionalLink.svelte -->
<script>
    export let isWrapped = false;
    export let href;
</script>

{#if isWrapped}
<a {href}>
    <slot/>
</a>
{:else}
<slot/>
{/if}

可以像这样使用:

<script>
    import ConditionalLink from './ConditionalLink.svelte'; 
    let wrapLink = false;
</script>

<ConditionalLink isWrapped={wrapLink} href="#">
    I'm a link
</ConditionalLink>

<label><input type="checkbox" bind:checked={wrapLink}> wrap link</label>

关于if-statement - Svelte 中是否有更好的方法来包含条件 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65835464/

相关文章:

php - 如果使用 PHP 则跳过 parent

SQL在存储过程中使用if语句更新表

go - 如果更改仅是一种参数类型,则避免代码重复

java - 在 Java 中,添加 else 语句(在已使用的 if 之后)是否需要更长的执行时间?

如果有多个条件,则 Excel 平均值

javascript - 如何检测 AdSense 是否在 JavaScript 中加载了广告?

javascript - 在 sapper 中,在 Polka 中创建单独的后端 API 或使用相同的 Polka server.js

svelte - 如何在 Svelte 中跨多行进行 react 性分配?

java - 如何避免在具有许多实例变量的类中使用getter/setter方法

haskell - 处理递归求和类型时如何减少代码重复