【问题标题】:ReactJS Array fill with key in JSX elementReactJS Array 用 JSX 元素中的键填充
【发布时间】:2018-09-15 13:30:30
【问题描述】:

我正在寻找生成多个 JSX 元素的最短方法。 例如,如果我需要生成 10 个<span>,我可以轻松使用 Array map 函数

{[...Array(10)].map((x, i) =>
    <span key={i} ></span>
)}

上述方法没有问题,但我想要另一个更短的版本,例如,

Array(10).fill(<span></span>);

但是,React 会大喊没有独特的“关键”道具。有没有人在不使用 random() 的情况下有一个干净的解决方案?

【问题讨论】:

    标签: javascript reactjs ecmascript-6 jsx


    【解决方案1】:

    Array(10).fill(&lt;span&gt;&lt;/span&gt;); 解决方案的问题不仅仅是键:它为数组中的每个条目使用 same 跨度,这可能不是您想要的。

    你可以使用Array#from:

    Array.from({length:10}, (_, i) => <span key={i}></span>);
    // or
    Array.from(Array(10), (_, i) => <span key={i}></span>);
    

    它仍然使用回调,但无论如何你都需要它。与扩展和映射相比,它稍微不那么冗长,效率更高(在 99.999% 的情况下并不重要)。

    【讨论】:

    • 我认为建议的答案和[...Array(10)].map((x, i) =&gt; &lt;span key={i} &gt;&lt;/span&gt; ) :P 之间没有太大区别,因为 op 试图跳过循环
    • @MayankShukla:对,没有。这里的要点是Array#fill 表面上的简单是虚幻的,需要回调。
    • @mayank 一次迭代而不是两次?
    • 谢谢,理想情况下,我想尽可能避免key,因为它只是为了 CSS 动画目的。但想知道这个愚蠢的工作是否有任何更短的版本。
    • @JonasW.,我认为是的 :)
    猜你喜欢
    • 2019-01-10
    • 2017-09-21
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    相关资源
    最近更新 更多