您的位置:首页 > Web前端 > React

React学习-列表循环中的特殊属性key

2017-06-25 19:41 435 查看
一、key的作用

1. key 帮助react确定list中哪些item已更改,添加或删除。

2. 便于在dom变化后,对比新旧DOM具体哪些item已变化,加快虚拟dom渲染和性能提升

二、key的使用注意事项

1. 使用数组下标做key是不被推荐的,如果遇到数组排序的情况下,将降低渲染性能。

const todoItems = todos.map((todo, index) =>
// 只有在没有id的情况下,才考虑使用数组下标
<li key={index}>
{todo.text}
</li>
);


2.数组中的key在其兄弟是独一无二的,但在全局并不一定是唯一的。

function Blog(props) {
const sidebar = (
<ul>
{props.posts.map((post) =>
<li key={post.id}>
{post.title}
</li>
)}
</ul>
);
const content = props.posts.map((post) =>
<div key={post.id}>
<h3>{post.title}</h3>
<p>{post.content}</p>
</div>
);
return (
<div>
{sidebar}
<hr />
{content}
</div>
);
}

const posts = [
{id: 1, title: 'Hello World', content: 'Welcome to learning React!'},
{id: 2, title: 'Installation', content: 'You can install React from npm.'}
];
ReactDOM.render(
<Blog posts={posts} />,
document.getElementById('root')
);


3.key的值无法传递到子组件中,若要实现相同数据的传递,可使用其他名称作为属性名。访问key的值会返回undefined

const content = posts.map((post) =>
<Post
key={post.id}
id={post.id}
title={post.title} />
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  react key