在React.js中使用列表和键
在React中的UI上显示列表
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。
如果列表很大并且编写干净的代码,则最好使用单独的组件。