zoukankan      html  css  js  c++  java
  • vue报错之(Do not use v-for index as key on <transition-group> children)

    在做项目时遇到碰到此问题,截取部分代码记录如下:

    transition-group.transition-group(type="animation" tag="div")
                .template(
                    v-for="(tax, index) in form.taxList"
                    :key="index"
                    )

    查阅相关资料得知:

    transition-group的子元素上不应使用索引index作为key的值,否则相当于没有使用key,通过官方文档可知:
    当 Vue.js 用v-for正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,
    并且确保它在特定索引下显示已被渲染过的每个元素。
    "就地复用"的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出。

    举例说明:
    <template>
      <div v-for="(item, index) in list" :key="index" >{{item.name}}</div>
    </template>
    //list值
    const list = [
      {
        id: 1,
        name: "Person1"
      },
      {
        id: 2,
        name: "Person2"
      },
      {
        id: 3,
        name: "Person3"
      },
      {
        id:4,
        name:"Person4"
      }
    ];

      若中间删除一个list项

    删除前:

    key id index name
    0 1 0 Person1
    1 2 1 Person2
    2 3 2 Person3
    3 4 3 Person4
    删除Person2后:
    key id index name
    0 1 0 Person1
    1 3 1 Person3
    2 4 2 Person4

    两表格对比可知:原index为1的name为Person2,删除后,index为1的name变为Person3,这就产生bug了,但如果使用唯一id作为key,删除 Person2 后,剩下的元素因为与 key 的关系没有发生变化,
    都不会被重新渲染,从而达到提升性能的目的。此时,list 的 item 作为 select 的选项,也不会出现上面所描述的bug。



  • 相关阅读:
    kafka搭建
    kafaka学习笔记
    metastore 简单说明
    二 python并发编程之多进程-理论
    文件指针偏移量
    FTP
    1 并发编程
    操作系统简介
    1 网络编程
    网络编程-osi七层
  • 原文地址:https://www.cnblogs.com/yycode01/p/13213597.html
Copyright © 2011-2022 走看看