Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

升级最新版后,useTable的rowSelection的onChange事件无效了 #3453

Closed
4 tasks done
wentmac opened this issue Dec 24, 2023 · 12 comments
Closed
4 tasks done

升级最新版后,useTable的rowSelection的onChange事件无效了 #3453

wentmac opened this issue Dec 24, 2023 · 12 comments

Comments

@wentmac
Copy link

wentmac commented Dec 24, 2023

⚠️ 重要 ⚠️ 在进一步操作之前,请检查下列选项。如果您忽视此模板或者没有提供关键信息,您的 Issue 将直接被关闭

  • 已阅读 文档.
  • 确保您的代码已是最新或者所报告的 Bug 在最新版本中可以重现. (部分 Bug 可能已经在最近的代码中修复)
  • 已在 Issues 中搜索了相关的关键词
  • 不是 ant design vue 组件库的 Bug

描述 Bug

升级最新版本后,useTable的rowSelection的onChange事件无效了。
列表中多选后,事件无效。把showTableSetting改成false,又变成有效了。但是showTableSetting的功能没了。

期望showTableSetting:true时,rowSelection的onChange事件还是有效。

image

请清晰地描述此 Bug 的具体表现。

复现 Bug

请描述在演示页面中复现 Bug 的详细步骤,以确保我们可以理解并定位问题。部分 Bug 如果未在 Demo 中涉及,请务必提供关键代码

系统信息

  • 操作系统:
  • Node 版本:
  • 包管理器 (npm/yarn/pnpm) 及其版本:
@wentmac
Copy link
Author

wentmac commented Dec 24, 2023

@xachary 帮看一下这个,我把你修改的ColumnSetting.vue这个文件 还原后就好了。这个应该是有bug导致onChange事件无效了

HADFB`HTX1SK_)I}Z{}Y}VQ

包括这个页面中多选功能bug,也是这个文件修改后导致的,还原之前的版本这个文件就好了

@wentmac
Copy link
Author

wentmac commented Dec 24, 2023

@wangjue666 管理员帮看下,#3398 这次的重构合并到主干的功能有bug

@xachary
Copy link

xachary commented Dec 24, 2023

@wentmac
请看
src\components\Table\src\hooks\useRowSelection.ts
第28行,onChange事件被omit掉了。
之前 #3398 之前可以,因为意外的覆盖了rowSelection设置,反而自己定义的onChange有效。
有空我看看原来useRowSelection的omit是什么目的

@xachary
Copy link

xachary commented Dec 24, 2023

@wentmac
看看提交:

df0f000
fix(table): fix rowSelection.onChange not work
修复为table提供rowSelection.onChange时,无法手动变更table的选中项的问题

移除omit逻辑,实测确实出现无法勾选(第一次之后就再也选不了)

@xachary
Copy link

xachary commented Dec 24, 2023

@wentmac
暂时可以替代的途径,用onSelect和onSelectAll模拟:

const checkedKeys = ref<number[]>([]);
const [registerTable] = useTable({
  // 略...
  rowSelection: {
      onSelect: (record, selected) => {
        if (selected) {
          checkedKeys.value = [...checkedKeys.value, record.id];
        } else {
          checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id);
        }
      },
      onSelectAll: (selected, _, changeRows) => {
        const changeIds = changeRows.map((item) => item.id);
        if (selected) {
          checkedKeys.value = [...checkedKeys.value, ...changeIds];
        } else {
          checkedKeys.value = checkedKeys.value.filter((id) => {
            return !changeIds.includes(id);
          });
        }
      },
  }
 // 略...
}

@wentmac
Copy link
Author

wentmac commented Dec 24, 2023

@wentmac 暂时可以替代的途径,用onSelect和onSelectAll模拟:

const checkedKeys = ref<number[]>([]);
const [registerTable] = useTable({
  // 略...
  rowSelection: {
      onSelect: (record, selected) => {
        if (selected) {
          checkedKeys.value = [...checkedKeys.value, record.id];
        } else {
          checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id);
        }
      },
      onSelectAll: (selected, _, changeRows) => {
        const changeIds = changeRows.map((item) => item.id);
        if (selected) {
          checkedKeys.value = [...checkedKeys.value, ...changeIds];
        } else {
          checkedKeys.value = checkedKeys.value.filter((id) => {
            return !changeIds.includes(id);
          });
        }
      },
  }
 // 略...
}

@xachary 帮看下,能不能兼容一下。项目中好多代码都是用的onChange来实现多选的功能,如果不兼容,要增加好多工作量去修改适配。谢谢

@xachary
Copy link

xachary commented Dec 25, 2023

帮看下,能不能兼容一下。项目中好多代码都是用的onChange来实现多选的功能,如果不兼容,要增加好多工作量去修改适配。谢谢

@wentmac 写个useTableOnChange,封装一下,可以暴露一个onChange用着先,那个useRowSelection前面的大神写的,没什么注释,估计没那么快,哈哈

@xachary
Copy link

xachary commented Dec 25, 2023

@wentmac 提了个pr,应该可以恢复外部onChange的回调

@wentmac
Copy link
Author

wentmac commented Dec 26, 2023

@wentmac 提了个pr,应该可以恢复外部onChange的回调

@xachary 我pull最新的代码试了onChange事件好使了,非常感谢。

有空帮看下演示站上 https://vben.vvbin.cn/#/comp/table/formTable 这个页面上的列表多选也有bug,帮处理下呗

@xachary
Copy link

xachary commented Dec 27, 2023

有空帮看下演示站上 https://vben.vvbin.cn/#/comp/table/formTable 这个页面上的列表多选也有bug,帮处理下呗

@wentmac

#3468

看看这个行不行?

@wentmac
Copy link
Author

wentmac commented Dec 27, 2023

有空帮看下演示站上 https://vben.vvbin.cn/#/comp/table/formTable 这个页面上的列表多选也有bug,帮处理下呗

@wentmac

#3468

看看这个行不行?

@xachary 测试了下,已经正常了,非常感谢你的付出!

@xachary
Copy link

xachary commented Dec 28, 2023

@wentmac 提了个pr,https://github.com/vbenjs/vue-vben-admin/pull/3477,简化了 /comp/table/formTable。

@github-actions github-actions bot locked and limited conversation to collaborators Aug 12, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants