一、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} />);