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

获取正确event.currentTarget:列表排序与删除异常问题排查

问题分析与解决
  • 问题核心:handleResetCreated函数的逻辑完全错配
    你在createdNotesSort里是按note的类型值维护createdNotes数组的(数组存的是具体的typeNote数值),但handleResetCreated里却把按钮的value当成了数组索引去过滤元素,这就导致删除的项和你点击的按钮完全不对应。比如数组是[5,3,2]时,若按钮value是3,你会尝试删除索引为3的元素(但数组只有3个元素,索引最大为2),等于没删;若按钮value是2,会删除索引2的元素(也就是数组里的2),这时候碰巧生效,但换其他情况就会出错。

  • 修复方案:把handleResetCreated改成和第一个函数一致的按值过滤逻辑,代码调整如下:

handleResetCreated = (e) => {
    const { createdNotes } = this.state;
    let typeCreated = +e.currentTarget.value;
    // 改为按值过滤,和createdNotesSort的删除逻辑统一
    const newCreatedNotes = createdNotes.filter(val => val !== typeCreated);
    this.setState({
        createdNotes: newCreatedNotes,
    }, () => {
      this.reloadData()
    })
};

如果你原本想按索引删除,那要确保按钮的value绑定的是数组的索引而非note类型值,但更推荐按值删除——因为数组会随排序、增删改变索引,用索引维护更容易出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:42:45