pro-components
pro-components copied to clipboard
🐛[BUG]pro-table的列设置功能的重置按钮点击后,无法为初始化时的columns状态
提问前先看看:
https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md
🐛 bug 描述
pro-table的列设置功能的重置按钮点击后,无法为初始化时的columns状态
📷 复现步骤
1.点击重置按钮后,disable属性失效。任意拖拽后,fixed属性失效
🏞 期望结果
列设置功能的重置按钮点击后,应该回到columns中设置的初始状态
💻 复现代码
复现地址: https://codesandbox.io/s/cha-xun-biao-ge-forked-mp4osj?file=/App.tsx
© 版本信息
- ProComponents 版本: [e.g. 4.0.0]
- umi 版本
- 浏览器环境
- 开发环境 [e.g. mac OS]
🚑 其他信息
好像不会诶,方便录屏吗?
@chenshuai2144 现在这个是没问题的 是因为我对columnsState的value做了管控。个人感觉在开发者不对value做管控的情况下,重置应该是回到初始状态吧,但是在columnsState的onchange回调中拿到的值 是丢失了colums中的fixed等属性。
确实onchange回调没有colums中的fixed、order等属性,做异步summary时踩过坑。
TAutomatically replying with ChatGPT can be attempted, but it cannot be guaranteed to be completely accurate and may not fully address all issues. Please feel free to reply if you have any further questions or concerns. 此回复基于 ChatGPT 自动生成,可以尝试下方案,官方员会在一定时间后继续继续处理。
了解了你的问题描述,可能是因为重置按钮是通过设置 value 值为 undefined 来实现重置的,这样会导致 columns 的 fixed 等属性的丢失。因为 columnsState 是 value 的转换结果,所以 value 为空时,columnsState 丢失了 fixed 等属性。因此,可能需要在 columnsState 的 onChange 回调中重新更新 columns。
可以尝试在 columnsState 的 onChange 回调里调用ProTable组件的 setColumns 方法,将原始 columns 重新设置一遍。
具体实现可以参考如下代码段:
const onColumnsStateChange = useCallback((value) => {
if (!value) {
setColumns(columns);
} else {
setColumnsState(value);
}
}, []);
return (
<ProTable
columns={columns}
request={fetchData}
options={{
fullScreen: true,
reload: true,
setting: true,
}}
value={columnsState}
onChange={onColumnsStateChange}
scroll={{ x: 1200 }}
rowSelection={{
selections: true,
}}
search={{
defaultCollapsed: false,
}}
/>
);
此外,我们可以通过在 ProTable 中添加 onColumnsStateChange 方法,来获得列设置面板中列配置变更时的回调,详见:API-Table。
另外需要注意,ProTable 组件的 value、onChange 都是用来做列设置面板的,我们在其他场景使用时并不需要这部分逻辑。
这种处理方式会有漏洞,举例说明: 如果在勾选列展示checkbox之前拖拽改变了顺序,在使用之前的columns再来设置是有问题。
暂时没有排期做这个受控功能
这个Bug无计划修复吗