React(Key)

作者: 余生筑 | 来源:发表于2017-11-03 11:17 被阅读11次

key适用于Virtual DOM树新旧情形如下时

<div>
<TodoItem text="one" />
<TodoItem text="two" />
</div>

<div>
<TodoItem text="zero" />
<TodoItem text="one" />
<TodoItem text="two" />
</div>

我们只是前插了一个TodoItem 节点,但如果没有key,<TodoItem text="one" />
<TodoItem text="two" />都会被卸载,然后<TodoItem text="zero" />,<TodoItem text="one" />,<TodoItem text="two" />会被加载,这会造成DOM树更新成本的剧增。

之所以出现上述这种更新方案,是因为react在判断两个新旧节点不同时所依据的"标识"是各节点位置。上述情形中,新旧节点位置不同,react自然会认为新旧节点不同。

而按照我们的理想状态,应该让<TodoItem text="one" />,<TodoItem text="two" />不被卸载,仅仅只是<TodoItem text="zero" />被加载,这就需要各个节点增加一个新标识,这个标识应该不随节点位置的变化而变化。这个标识,就被我们称为"key"。

  • 采用"key"的解决方案

<div>
<TodoItem key={1} text="one" />
<TodoItem key={2} text="two" />
</div>

<div>
<TodoItem key={0} text="zero" />
<TodoItem key={1} text="one" />
<TodoItem key={2} text="two" />
</div>
···

相关文章

  • React(Key)

    key适用于Virtual DOM树新旧情形如下时 旧 新 我们只是前插了一个TodoItem 节点,但如果没有k...

  • react key

    为什么不能拿数组的index作为react的key 因为对于动态列表,如果索引对应的值发生了变化,尤其是排在前面的...

  • react使用知识总结(持续更新)

    1. key react凡是动态创建的元素必须要有的标志,并且所有元素的key唯一,在 React Diff 算法...

  • 性能优化

    React:react:key-diffshouldComponentUpdate-避免无意义state渲染服务端...

  • React中key的用处

    key的原理 React 元素可以具有一个特殊的属性 key,这个属性不是给用户自己用的,而是给 React 自己...

  • ReactNative性能优化相关

    1,Component Key 如果component用了random key,那么react会在做虚拟dom比较...

  • [react]10、react性能优化

    1、列表&key 一、React更新流程 React在props或state发生改变时,会调用React的rend...

  • react-key

    react有一个特殊属性key 应用场景根据数组动态创造,不确定数量,顺序的子节点时使用需要对某一组件的更新操作强...

  • React列表 & Key

    渲染多个组件 使用 {} 在 JSX 内构建一个元素集合。 基础列表组件 在一个组件中渲染列表。 key key ...

  • React的key

    react中的key的选择父元素下面的子节点之间需要设置一个唯一的key值,方便diff算法计算。Key 应该具有...

网友评论

    本文标题:React(Key)

    本文链接:https://www.haomeiwen.com/subject/ucnzpxtx.html