📅  最后修改于: 2020-12-19 08:36:23             🧑  作者: Mango
密钥是唯一的标识符。在React中,它用于标识哪些项目已更改,更新或从列表中删除。当我们动态创建组件或用户更改列表时,这很有用。它还有助于确定需要重新呈现集合中的哪些组件,而不是每次都重新呈现整个组件集。
应该在数组内部提供键,以使元素具有稳定的标识。选择键作为唯一标识列表中项目的字符串的最佳方法。用下面的例子可以理解。
const stringLists = [ 'Peter', 'Sachin', 'Kevin', 'Dhoni', 'Alisa' ];
const updatedLists = stringLists.map((strList)=>{
{strList} ;
});
如果没有用于呈现项目的稳定ID,则可以将项目索引分配为列表的键。可以在下面的示例中显示。
const stringLists = [ 'Peter', 'Sachin', 'Kevin', 'Dhoni', 'Alisa' ];
const updatedLists = stringLists.map((strList, index)=>{
{strList} ;
});
注意:如果项目的顺序将来可能更改,则不建议对索引使用索引。这会给开发人员造成混乱,并可能导致组件状态出现问题。
考虑您已经为ListItem创建了一个单独的组件,并从该组件中提取了ListItem。在这种情况下,您应该在数组的
import React from 'react';
import ReactDOM from 'react-dom';
function ListItem(props) {
const item = props.item;
return (
// Wrong! No need to specify the key here.
{item}
);
}
function NameList(props) {
const myLists = props.myLists;
const listItems = myLists.map((strLists) =>
// The key should have been specified here.
);
return (
Incorrect Key Usage Example
{listItems}
);
}
const myLists = ['Peter', 'Sachin', 'Kevin', 'Dhoni', 'Alisa'];
ReactDOM.render(
,
document.getElementById('app')
);
export default App;
在给定的示例中,列表已成功呈现。但是,我们没有为map()迭代器分配键不是一个好习惯。
输出量
要更正上面的示例,我们必须将键分配给map()迭代器。
import React from 'react';
import ReactDOM from 'react-dom';
function ListItem(props) {
const item = props.item;
return (
// No need to specify the key here.
{item}
);
}
function NameList(props) {
const myLists = props.myLists;
const listItems = myLists.map((strLists) =>
// The key should have been specified here.
);
return (
Correct Key Usage Example
{listItems}
);
}
const myLists = ['Peter', 'Sachin', 'Kevin', 'Dhoni', 'Alisa'];
ReactDOM.render(
,
document.getElementById('app')
);
export default App;
输出量
我们已经讨论过,数组中的键分配在它们的同级之间必须是唯一的。但是,这并不意味着键应该是全局唯一的。我们可以在生成两个不同的数组时使用同一组键。在下面的示例中可以理解。
import React from 'react';
import ReactDOM from 'react-dom';
function MenuBlog(props) {
const titlebar = (
{props.data.map((show) =>
-
{show.title}
)}
);
const content = props.data.map((show) =>
{show.title}: {show.content}
);
return (
{titlebar}
{content}
);
}
const data = [
{id: 1, title: 'First', content: 'Welcome to JavaTpoint!!'},
{id: 2, title: 'Second', content: 'It is the best ReactJS Tutorial!!'},
{id: 3, title: 'Third', content: 'Here, you can learn all the ReactJS topics!!'}
];
ReactDOM.render(
,
document.getElementById('app')
);
export default App;
输出量