【问题标题】:Shorthand attribute in each block of SvelteSvelte 每个块中的速记属性
【发布时间】:2021-10-03 05:47:02
【问题描述】:

我有一个 JSON 变量,其中包含以下方式的属性:

// JSON variable defining attributes for elements to be created

let myElements = [
    {
        attr1: "myAttr1",
        attr2: "myAttr2",
    },
    {
        attr1: "myAttr4",
        attr2: "myAttr5",
    }
];

我想使用如下所示的 each 块基于 JSON 变量中定义的属性呈现 HTML 元素:

<-- Svelte Code -->

{#each myElements as myElement}
    <div {myElement.attr1} {myElement.attr2}>
    </div>
{/each}

这样它们就会以这种方式呈现:

<-- Desired Resultant HTML -->
<div attr1="myAttr1" attr="myAttr2"></div>
<div attr1="myAttr4" attr2="myAttr5"></div>

但是,当我在 HTML 标记中引用 {myElement.attr1} 之类的属性时,svelte 会显示“预期为 }”错误。可以这样使用速记属性吗?

【问题讨论】:

    标签: javascript html svelte


    【解决方案1】:

    你可以使用解构

    <script>
        let things = [
        {attr1:'a',attr2:'b'},
            {attr1:'ace',attr2:'bdd'},
            {attr1:'as',attr2:'bsd'},
        ]
    </script>
    
    {#each things as {attr1, attr2}}
        <div {attr1} {attr2}>{attr1}</div>
    {/each}
    

    【讨论】:

    • 是的,这行得通!非常感谢。是否也可以将解构与正常的对象迭代结合起来?假设有很多属性,我可以解构其中的一个子集还是必须全部解构?
    • 您可以解构一个子集 afaik。此外,它很容易检查。
    猜你喜欢
    • 2022-01-23
    • 2021-02-09
    • 2011-04-19
    • 2021-09-28
    • 2019-11-16
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多