You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js数组重排序时报Cannot read properties of undefined (reading '$set')如何解决

错误原因
  • $set调用格式错误:$set是Vue实例挂载的方法,不属于数组/对象的子属性。你代码中this.Documents.document_number本身是不存在的属性(Documents是数组,没有直接的document_number键),值为undefined,调用undefined的$set方法自然抛出该报错。
  • 冗余且有风险的索引查找逻辑:你通过filter得到的filteredDocuments数组的项本身就是原Documents数组的对象引用,不需要再通过id查找原数组索引;且如果数组出现重复id(如你给出的示例中document3和document4的id均为4),findIndex永远只会匹配到第一个符合条件的项,会导致修改错误。
修复后的实现代码
reorderDocuments(deleted_document_number){
  // 遍历所有序号大于被删除文档的条目
  this.Documents.forEach(doc => {
    if (doc.document_number > deleted_document_number) {
      // 正确调用$set修改响应式属性,参数顺序为:目标对象、属性名、新值
      this.$set(doc, 'document_number', doc.document_number - 1)
    }
  })
}
补充说明

如果你的项目是Vue3,不需要使用$set保证响应性,直接修改属性即可:

doc.document_number = doc.document_number - 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:01