关于vue单选和多选切换过程中的坑

探讨了在Vue中切换单选与多选时遇到的<transition-group>childrenmustbekeyed:<ElTag>错误,并提供了解决方案。通过使用v-if、watch监控和setTimeout实现,虽然功能满足需求,但用户体验有待提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于vue单选和多选切换过程中的坑
问题:vue单选多选切换时,会报错,<transition-group> children must be keyed: <ElTag>原因是切换过程中错误栈都在Vue内部

解决办法:select标签加v-if判断,multiple属性加条件multiple,watch监控multiple的变化,先关闭select再重新加载。

<el-select    v-if="update"   >
	<option :multiple="multiple"></option>
</el-select>
<script>
{  
data(){  
  return {      
  update: true,
  updates:[] ,
   updateIndex:null,
   multiples:[],
   multiple:true,
     } 
 }, 
methods:{
a(){
this.multiple = true
}
},
 watch:{  
  'multiple'(){ //单个监控
     this.update = false  
    setTimeout(()=>{   
     this.update = true 
     },300)  
  } ,
     'multiples'(val) {//监控数组时
      this.$set(this.updates, this.updateIndex, false)
      setTimeout(() => {
        this.$set(this.updates, this.updateIndex, true)
      }, 300)
    },
 }}</script>

不足之处:切换过程中有短暂的可见的框变动。功能满足,但实现效果不很理想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值