You need to enable JavaScript to run this app. Vue+Vuetify中数组排序后Checkbox选中状态异常问题
优惠活动
大模型
产品
解决方案
定价
更多

Vue+Vuetify中数组排序后Checkbox选中状态异常问题

问题原因
  • 首要原因是 v-for 未绑定唯一key属性。Vue的列表渲染默认采用「就地复用」策略,未指定key时,数组排序后Vue不会移动DOM节点,只会就地更新每个位置节点的内容,导致v-checkbox的value属性与选中状态的对应关系错乱,无法正确匹配selected数组中的值,触发非预期的选中变更。
  • 次要原因是Array.sort()为原地排序方法,会直接修改原数组,直接将排序结果赋值给todos会触发额外的响应式更新,进一步加剧渲染错乱。
修复方案

1. 给v-for添加唯一key

修改列表渲染部分的代码,用item的唯一id作为key:

<div v-for="g in todos" :key="g.id">
    <v-checkbox v-model="selected" :value="g.id" :disabled="true" :label="g.text"></v-checkbox>
</div>

2. 排序前拷贝数组避免原地修改

修改排序逻辑,先浅拷贝原数组再执行排序,不直接修改原数组:

FullRefresh:function() {
  this.todos = [...this.todos].sort(function(a,b) {
    return a.val - b.val;
  });
}

内容的提问来源于stack exchange,提问作者omega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 08:54:07