反应关键道具的有效符号是什么;
<div key="can i use spaces for example?"></div>
在我的情况下,我想使用URL作为键
const links = [
{
label: 'foo label',
href: 'https://example.com',
},
{
label: 'bar label',
href: 'https://example.com',
}
]
links.map(
link => (<a key={link.href} href={link.href}>{link.label}</a>)
);
这有效吗?我以为我可以使用一些哈希函数来首先传递href,但如果任何字符保证在键值中有效,这是一个毫无意义的步骤。
我问的原因是,我无法在文档中找到使用非字母数字字符作为密钥的任何示例,并明确说明,如果您不这样做,有一个ID可用作您可以hash some part of it to make a key
呈现的对象的关键字。虽然这可能是因为你不应该使用非常长的密钥,并且应该首先散列内容以截断它的大小,但似乎整个文档隐含地说只应使用字母数字字符作为一把钥匙。
答案 0 :(得分:2)
在实践中,找到钥匙并不是很难。大多数时候, 您要显示的元素已经具有唯一ID。那是什么时候 不是这样,您可以为模型添加新的ID属性或散列一些 部分内容生成密钥。请记住,钥匙只有 在兄弟姐妹中独树一帜,而不是全球独一无二。
因此,关键应该是独特的(在其兄弟姐妹中)并且稳定。
因此,你的榜样非常合适。空间也应该没问题。