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

React Hooks实现AntD表格列过滤,for循环报错改用forEach方案咨询

问题解决方案

报错原因

  • Unary operator '++' used:项目ESLint规则禁用了++自增运算符,触发了语法校验报错
  • Expected property shorthand:当对象属性名与赋值的变量名完全一致时,ESLint要求使用属性简写语法,省略重复的属性值声明

改用forEach实现的代码

const onChange = (e) => {
  const { checkedColumns: oldChecked, initialColumns } = colmenu
  // 生成新的选中列数组,避免直接修改原state引用
  let checkedColumns = [...oldChecked]
  if (e.target.checked) {
    checkedColumns = checkedColumns.filter(id => id !== e.target.id)
  } else {
    checkedColumns.push(e.target.id)
  }
  let filtered = [...initialColumns]
  // 替换原for循环为forEach实现列过滤
  checkedColumns.forEach(hideDataIndex => {
    filtered = filtered.filter(el => el.dataIndex !== hideDataIndex)
  })
  // 属性名与变量名一致,使用简写规避第二个报错
  setColmenu({ columns: filtered, checkedColumns })
}

性能优化方案(可选)

上述forEach写法会多次遍历列数组,实际可以用单次过滤实现相同逻辑,性能更优:

const filtered = initialColumns.filter(el => !checkedColumns.includes(el.dataIndex))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:39:03