美文网首页
vue通过v-for循环多次子组件,改变组件的个数,组件相互干扰

vue通过v-for循环多次子组件,改变组件的个数,组件相互干扰

作者: 柯柯的呵呵哒 | 来源:发表于2022-08-12 11:15 被阅读0次

    父组件通过数组v-for循环可以动态的添加、删除组件

    <li v-for="(item, index) in personCheckList" :key="index" :data-key="item.key">
          <work-zong-jie v-if="item.value === 'workZongJie'" :record="item" ref="workZongJieRef"></work-zong-jie>
    </li>
    
    删除最后一个组件,不会出现任何问题,但是,当我们删除第一个,第二个组件的时候,就会出现data值之间的相互干扰,并且,组件的唯一key值,却是并未删除出错,后台打印的数据,也是没有任何问题 组件添加.png
    删除key:1793的组件之后的效果.png

    这就会发生一个比较有趣的事情,所对应的key组件确实删除了,没有任何问题,但是,组件里面的data值会改成第一个组件的值,查阅了很多资料发现是v-for的key出现了问题。一般写v-for组件的时候,我都习惯性的将index值赋值给key。但是,当我删除第一个组件的时候key为0,数组的第二个组件的key也会变成0,所以,因为key的赋值,导致数组的删除出现了data的值的混淆,代码修改如下:

    <li v-for="item in personCheckList" :key="item.key" :data-key="item.key">
          <work-zong-jie v-if="item.value === 'workZongJie'" :record="item" ref="workZongJieRef"></work-zong-jie>
    </li>
    

    key值说明:
    key的作用主要是为了高效的更新虚拟DOM。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们。v-for首次循环显示时给每个子元素加一个唯一的key,在页面刷新或者DOM改变时就会通过之前的key快速将其渲染出来

    相关文章

      网友评论

          本文标题:vue通过v-for循环多次子组件,改变组件的个数,组件相互干扰

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