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

作者站长头像
站长
· 阅读数 4

接手别人的前端代码,发现一个奇怪的问题,用的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,但是都不起作用

回复
1个回答
avatar
test
2024-06-29

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

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容