React JSX 中 key={`note${note.id}`}> 和 key={note.id} 的区别?
Difference between key={`note${note.id}`}> and key={note.id} in React JSX?
我正在学习 React 教程,作者有一些代码如下:
<li key={`note${note.id}`}>
<Note task={note.task} />
</li>
但是,如果您只是这样做,同样的代码也可以工作:
<li className="note" key={note.id}>
<Note task={note.task}/>
</li>
第一个示例中实际 note.id 之前的 `note$ 的用途是什么?两者都有效,只是好奇为什么会这样。
两个例子设置的key不同
假设笔记对象的 id 为 1。
最上面的示例 key={'notes${note.id}'}>
将键属性设置为 'note1'。
底部示例 key={note.id}
将密钥设置为“1”。
它们都可以工作,因为 key 属性仅用于唯一标识组件的子项。 top one key="note1" 可能更好,只是因为它更具描述性、具体性和可读性。你可以想象一个 React 组件有不止一种子类型,如果它们都被赋予简单的数字键,它们的键可能会发生冲突。
这个
`${variableName}`
syntax 是新的 ES6 Javascript 字符串格式化语法,类似于 python 或 ruby 中的字符串插值。请参阅文档 here。
<li key={`note${note.id}`}>
等同于 <li key={"note" + note.id}>
.
在 React 中,key
道具用于协调渲染之间的元素。 DOM 组件的所有子元素都必须具有唯一键。参见 Reconciliation。
将值 note.id
分配给 <li>
元素的 key
属性可确保所有元素都具有不同且唯一的键。如果您的父元素还包含其他元素,则使用 "note"
作为前缀可确保没有重叠。
这是一个示例,其中必须为键添加前缀,因为 ID 可以在笔记和草稿之间共享。
var notes = [
{ id: 0, message: 'foo' },
{ id: 1, message: 'bar' },
];
var drafts = [
{ id: 0, message: 'foo' },
{ id: 1, message: 'bar' },
];
var children = notes.map(function(note) {
return <li key={`note${note.id}`}><Note /></li>;
}).concat(drafts.map(function(draft) {
return <li key={`draft${draft.id}`}><Draft /></li>;
}));
return <ul>{children}</ul>
我正在学习 React 教程,作者有一些代码如下:
<li key={`note${note.id}`}>
<Note task={note.task} />
</li>
但是,如果您只是这样做,同样的代码也可以工作:
<li className="note" key={note.id}>
<Note task={note.task}/>
</li>
第一个示例中实际 note.id 之前的 `note$ 的用途是什么?两者都有效,只是好奇为什么会这样。
两个例子设置的key不同
假设笔记对象的 id 为 1。
最上面的示例 key={'notes${note.id}'}>
将键属性设置为 'note1'。
底部示例 key={note.id}
将密钥设置为“1”。
它们都可以工作,因为 key 属性仅用于唯一标识组件的子项。 top one key="note1" 可能更好,只是因为它更具描述性、具体性和可读性。你可以想象一个 React 组件有不止一种子类型,如果它们都被赋予简单的数字键,它们的键可能会发生冲突。
这个
`${variableName}`
syntax 是新的 ES6 Javascript 字符串格式化语法,类似于 python 或 ruby 中的字符串插值。请参阅文档 here。
<li key={`note${note.id}`}>
等同于 <li key={"note" + note.id}>
.
在 React 中,key
道具用于协调渲染之间的元素。 DOM 组件的所有子元素都必须具有唯一键。参见 Reconciliation。
将值 note.id
分配给 <li>
元素的 key
属性可确保所有元素都具有不同且唯一的键。如果您的父元素还包含其他元素,则使用 "note"
作为前缀可确保没有重叠。
这是一个示例,其中必须为键添加前缀,因为 ID 可以在笔记和草稿之间共享。
var notes = [
{ id: 0, message: 'foo' },
{ id: 1, message: 'bar' },
];
var drafts = [
{ id: 0, message: 'foo' },
{ id: 1, message: 'bar' },
];
var children = notes.map(function(note) {
return <li key={`note${note.id}`}><Note /></li>;
}).concat(drafts.map(function(draft) {
return <li key={`draft${draft.id}`}><Draft /></li>;
}));
return <ul>{children}</ul>