星海

React · 单选题 · 第 39 题

前端与全栈开发面试 · 第 39 题

React 渲染列表时给每一项设置 key,下列说法正确的是?

  1. Akey 需要在整个应用范围内全局唯一,不同列表之间的 key 也绝对不能出现任何重复
  2. Bkey 帮助 diff 识别同层元素的移动、新增和删除;列表会重排时用下标作 key 可能导致状态错乱
  3. C子组件可以通过 props.key 读取到父组件传入的 key 值,常用它来作为组件的业务 ID
  4. Dkey 只会影响渲染时的性能,不会影响渲染结果的正确性,所以用数组下标作 key 也没关系

答案

B B. key 帮助 diff 识别同层元素的移动、新增和删除;列表会重排时用下标作 key 可能导致状态错乱

解析

key 只需要在兄弟节点之间唯一。React 用 key 判断前后两次渲染中哪些是同一个元素,用下标作 key 时,在头部插入或重新排序会让组件实例和 DOM 错位,输入框内容、组件内部状态都可能对不上。key 不会作为 props 传给子组件,需要的话要另外传一个属性。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。