Map是JavaScript函数,它将为提供的数组返回一个新数组,如下所示-
const originalNumbers = [ 2, 4, 6, 8, 10]; const squaredNumbers = originalNumbers.map( (number)=> number * number); console.log(“Squared Numbers==”squaredNumbers);
在React中构建列表与使用map函数类似。我们将返回一个包含平方值的列表元素,而不仅仅是返回一个平方数。
const originalNumbers = [ 2, 4, 6, 8, 10];
const squaredNumbersList= originalNumbers.map((number) =>
<li>{number*number}</li>
);使用ui标签在屏幕上渲染-
ReactDOM.render(
<ul>{ squaredNumbersList }</ul>,
document.getElementById('root')
);当我们运行此示例时,我们将在浏览器控制台中收到警告,提示列表键缺失。为了反应理解每一行,它需要一个键,该键应该是行唯一的。
const squaredNumbersList= originalNumbers.map((number) =>
<li key={SomeUniqueKey}>{number*number}</li>
);键将用于识别哪一行被更改,删除或新添加。因此,React将更新UI。我们还将获得循环索引。
const squaredNumbersList= originalNumbers.map((number,index) =>
<li key={index}>{number*number}</li>
);但是React不建议使用索引作为键,因为它会对应用程序的性能产生一些负面影响。
键在同级行之间应该是唯一的,并且在组件中不必是全局唯一的。
map函数内部的元素需要键,而行中不需要其他嵌套的子元素。
在jsx表达式中嵌入map函数-
function MessageList(props) {
const messages = props.messages;
return (
<ul>
{messages.map((message) =>
<ListItem key={message.rowKey}
value={message.text} />
)}
</ul>
);
}这里ListItem是一个自定义组件,将每个消息作为值prop,键是消息对象上的rowKey。
如果列表很大并且编写干净的代码,则最好使用单独的组件。