React中的key值作用()

我们知道,不管是在vue还是react中,当循环列表的时候,往往会写一个key,那么这个key起到了什么作用呢?

其实,key是react用来追踪哪些列表的元素被修改,被添加或者是被删除的辅助标示。在开发过程中我们需要保证某个元素的key在其同级元素中具有唯一性

react的diff算法中react会借助元素的key来判断该元素是最新创建的还是被移动而来的,从而减少不必要的元素渲染除此之外,react还要根据key来判断元素与本地状态的关联关系。

注意点:

  • key的值一定要和具体的元素一一对应
  • 尽量不要用数组中的index来作为key的值
  • 永远不要视图在render的时候用随机数或者是其他的操作来给key加上不稳定的key,这样造成的性能开销比不加key的情况更糟糕。

如果不写key就会出现这种情况

 

在开发react程序时我们经常会遇到这样的警告,然后就会想到:哦!循环子组件忘记加key了~

出于方便,有时候会不假思索的使用循环的索引作为key,但是这样真的好吗?什么样的值才是key的最佳选择?

为了弄明白,本文将从三个方面来分析"key":

1.为什么要使用key

2.使用index做key存在的问题

3.正确的选择key

1.为什么要使用key
react官方文档是这样描述key的:

Keys可以在DOM中的某些元素被增加或删除的时候帮助React识别哪些元素发生了变化。因此你应当给数组中的每一个元素赋予一个确定的标识。

react的diff算法是把key当成唯一id然后比对组件的value来确定是否需要更新的,所以如果没有key,react将不会知道该如何更新组件。

你不传key也能用是因为react检测到子组件没有key后,会默认将数组的索引作key

react根据key来决定是销毁重新创建组件还是更新组件,原则是:

key相同,组件有所变化,react会只更新组件对应变化的属性。
key不同,组件会销毁之前的组件,将整个组件重新渲染。
 

おすすめ

転載: blog.csdn.net/m0_60237095/article/details/120945932
おすすめ