我只是在React docs for Lists and Keys中没有看到明确。
我的直觉是将它们视为HTML ID-attribute-safe,HTML5 spec说:
该值不得包含任何空格字符
...还MDN docs。
我担心最糟糕的情况可能是像ice box
,ice cream
和ice cold
这样的密钥可能会意外地变成ice
的三个密钥,这是显然不是我们想要的。
但是,我意识到这不是HTML 。最具体的提及是在Lists And Keys文档页面中说
选择密钥的最佳方法是使用在其兄弟姐妹中唯一标识列表项的字符串。
那么,使用任何“唯一字符串”是否安全,包括空格?
我知道唯一的商品ID是最好的,但在我的具体用例中,我没有这样的东西,也没有slug / safe字符串。这源于讨论当真实身份证不可用时{@ 3}}的程度。
答案 0 :(得分:11)
一般来说,React不关心字符串中的字符是什么,也不需要检查。 React在检查虚拟DOM中的唯一性时使用密钥,并且密钥不会出现在生成的HTML中(更多)。因此,没有HTML规则,特别是那些为id
定义的规则不适用于此。
为什么HTML
中的标识符不允许空格?原因可能是因为它们在CSS中被用作#myIdentifier
,并且空间会使含义变得模糊。