ElementUI 组件排序后删除按钮随机删除元素,如何排查和解决?

接手别人的前端代码,发现一个奇怪的问题,用的elementUI组件,排序后点击删除按钮会随机删除,但是打印传入的下标发现又是正确的,只剩一个元素时可以正常删除,可能有哪些原因?
删除函数

 async onDelDtlGood(rowIndex) {
            console.log(rowIndex);
            this.addForm.dtlGoods.splice(rowIndex, 1);
        },

排序函数

 customSort(a, b) {
          const aCode = a.goodsCode;
          const bCode = b.goodsCode;
          if (aCode < bCode) {
            return -1;
          }
          if (aCode > bCode) {
            return 1;
          }
          return 0;
        },

删除按钮

  <el-table-column lable="操作" width="120">
      <template slot-scope="scope">
          <el-button type="danger" @click="onDelDtlGood(scope.$index)">
             删除
           </el-button>
      </template>
 </el-table-column>

尝试了防止事件冒泡,重写排序函数,去除删除函数的异步修饰符,对this.addForm.dtlGoods.splice(rowIndex, 1) 加await,但是都不起作用

阅读 924
2 个回答
✓ 已被采纳

并不是随机删除,而是index是实时的变化,不是你打印的时候的顺序. 只剩下一个元素时已经无法变了,自然可以正常删

讲真 能把下标换成id(唯一)就换成id
不能的话 打印下this.addForm.dtlGoods.splice(rowIndex, 1);
splice是有返回值的 看下截取的这个元素跟你那个rowIndex啥关系就行了
打印可以让你知道(推测)99%的问题的出现原因

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题