React hooks学习小结(一)—— key

文章介绍了React中key的作用,强调了保证key的稳定性和唯一性对性能的影响,以及不应使用index作为key。同时,讲解了<Fragment>组件的使用,特别是在循环渲染多个元素时避免DOM混乱的方法,并指出为何需要使用<Fragment>包裹多个JSX标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. key render

the key lets React identify the item throughout its lifetime.
(React通过key对item识别跟踪,是唯一标识符)

tips:保证稳定且唯一

  • 不要使用index作为key。如果item被插入、删除或者数组重新排序,渲染项目的顺序会随着时间的推移而改变
  • 不要即时生成key,例如key={Math.random()}。
    • key不稳定,键在渲染之间永远不会匹配,从而导致每次都重新创建所有组件和 DOM,性能差
    • 每次渲染key都会变,丢失列表项内的任何用户输入,例如输入框输入一次就失去焦点。

1. 1 <Fragment> (<>...</>)

空的 JSX 标签<></>是简写,Fragments disappear from the DOM

return (
    <>
      <OneChild />
      <AnotherChild />
    </>
)

当你在循环中渲染多个元素时,你需要为每个元素分配一个key。
如果你想传递key给一个片段,你不能使用<>…</>语法。您必须显式导入Fragment和’react’渲染<Fragment key={yourKey}>...</Fragment>。

import { Fragment } from 'react';

const posts = [
  { id: 1, title: 'An update', body: "It's been a while since I posted..." },
  { id: 2, title: 'My new blog', body: 'I am starting a new blog!' }
];

export default function Blog() {
  return posts.map(post =>
    <Fragment key={post.id}>
      <h1>{post.title}</h1>
      <article><p>{post.body}</p></article>
    </Fragment>
  );
}

1.2 为什么需要包裹多个 JSX 标签?

JSX 在底层被转换为普通的 JavaScript 对象。如果不将它们包装到数组中,则不能从函数返回两个对象。这解释了为什么不能返回两个 JSX 标签,而是将它们包装到另一个标签或片段中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你脸上有BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值