1. 首页
  2. 编程面试题
  3. 前端
  4. Vue

如果后台接口返回的循环数据没有唯一值,在v-for循环中如何设置key?



key值在列表渲染的时候,能够提升列表渲染性能,为什么呢?首先得想想Vue的页面是如何渲染的,主要分为以下几步:

- 将页面结构的文档构建成一个vdom虚拟数
- 页面有新的交互,产生新的vdom数,然后与旧数进行比较,看哪里有变化了,做对应的修改(删除、移动、更新值)等操作(对比react、小程序)
- 最后再将vdom渲染成真实的页面结构

key值的作用就在第二步,当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。key值如果不指明,默认会按数组的索引来处理,因而会导致一些类似input等输入框组件的值出现混乱的问题。

- 不加key,在数组末尾追加元素,之前已渲染的元素不会重新渲染。但如果是在头部或者中间插入元素,整个list被删除重新渲染,且input组件的值还出现了混乱,值没有正常被更新
- 添加key,在数组末尾、中间、或者头部插入元素,其它已存在的元素都不会被重新渲染,值也能正常被更新

因而,在做list渲染时,如果list的顺序发生变化时,最好增加key,且不要简单的使用数组索引当做key,需要用唯一值当成key。

如果后台接口返回的循环数据没有唯一值,那么可以在客户端利用map循环对原数组内容进行遍历,然后返回经处理过带有唯一值的数组列表,那么在v-for循环的时候依旧设置的是唯一值数据。

发布者:admin,如若转载,请注明出处:https://ai1024.vip/40236.html

QR code
//