9 React 列表 & Keys

react

使用 map() 方法遍历数组生成了一个 1 到 5 的数字列表:

map()方法可以用来创建列表。

const numbers = [1, 2, 3, 4, 5];

const listItems = numbers.map((numbers) =>

<li>{numbers}</li>

);

ReactDOM.render(

<ul>{listItems}</ul>,

document.getElementById('example')

);

 我们可以将以上实例重构成一个组件,组件接收数组参数,每个列表元素分配一个 key,不然会出现警告 a key should be provided for list items,意思就是需要包含 key

function NumberList(props) {

const numbers = props.numbers;

const listItems = numbers.map((number) =>

<li key={number.toString()}>

{number}

</li>

);

return (

<ul>{listItems}</ul>

);

}

const numbers = [1, 2, 3, 4, 5];

ReactDOM.render(

<NumberList numbers={numbers} />,

document.getElementById('example')

);

Keys:

Keys 可以在 DOM 中的某些元素被增加或删除的时候帮助 React 识别哪些元素发生了变化。因此你应当给数组中的每一个元素赋予一个确定的标识。

const numbers = [1, 2, 3, 4, 5];

const listItems = numbers.map((number) =>

<li key={number.toString()}>

{number}

</li>

);

一个元素的 key 最好是这个元素在列表中拥有的一个独一无二的字符串。通常,我们使用来自数据的 id 作为元素的 key:

const todoItems = todos.map((todo) =>

<li key={todo.id}>

{todo.text}

</li>

);

当元素没有确定的 id 时,你可以使用他的序列号索引 index 作为 key:

const todoItems = todos.map((todo, index) =>

// 只有在没有确定的 id 时使用

<li key={index}>

{todo.text}

</li>

);

key的正确使用方式:

function ListItem(props) {

// 对啦!这里不需要指定key:

return <li>{props.value}</li>;

}

function NumberList(props) {

const numbers = props.numbers;

const listItems = numbers.map((number) =>

// 又对啦!key应该在数组的上下文中被指定

<ListItem key={number.toString()}

value={number} />

);

return (

<ul>

{listItems}

</ul>

);

}

const numbers = [1, 2, 3, 4, 5];

ReactDOM.render(

<NumberList numbers={numbers} />,

document.getElementById('example')

);

以上是 9 React 列表 & Keys 的全部内容, 来源链接: utcz.com/z/381568.html

回到顶部