Skip to content

fix: prevent React plugin render loop - #5269

Draft
biubiukam wants to merge 1 commit into
VisActor:developfrom
biubiukam:fix/issue-4859-react-plugins-loop
Draft

fix: prevent React plugin render loop#5269
biubiukam wants to merge 1 commit into
VisActor:developfrom
biubiukam:fix/issue-4859-react-plugins-loop

Conversation

@biubiukam

Copy link
Copy Markdown
Contributor

🤔 这个分支是...

  • 新功能
  • Bug fix
  • Ts 类型更新
  • 打包优化
  • 性能优化
  • 功能增强
  • 重构
  • 依赖版本更新
  • 代码优化
  • 测试 case 更新
  • 分支合并
  • 网站/文档更新
  • demo 更新
  • Workflow
  • 配置修改
  • 发布
  • 其他 (具体是什么,请补充?)

🔗 相关 issue 连接

fix #4859

💡 问题的背景&解决方案

React ListTable 配置 plugins={[new FilterPlugin({})]} 后,内部表格渲染会更新 updateId。原有 handleTableRender 同时依赖 updateId 和整个 props,回调身份变化会再次触发 option effect。插件实例参与差异比较后,内部刷新会被持续识别为配置更新,最终触发 React Maximum update depth exceeded

本次修改:

  • handleTableRender 改为稳定回调,并通过 ref 获取最新 props。
  • 使用函数式 setUpdateId,避免内部计数器成为回调依赖。
  • 使用 ref 保留 onReady(instance, isInitial) 的首次渲染语义。
  • 添加配置 FilterPlugin 的 React 回归测试。

📝 Changelog

Language Changelog
🇺🇸 English Prevent React ListTable plugin options from causing an infinite render loop.
🇨🇳 Chinese 修复 React ListTable 配置插件后可能触发的无限渲染循环。

✅ 验证

  • 修复前,回归用例因持续更新超过一分钟无法结束;修复后,1 个测试套件、1 个测试通过。
  • React 包 TypeScript 编译与 Rush 目标构建通过。
  • pre-push 中 react-vtablevtablevtable-pluginsvtable-ganttvue-vtable 测试通过。
  • 未修改的 vtable-sheet 仍存在缺失包构建产物及既有公式断言失败,本分支不包含 packages/vtable-sheet 改动。

☑️ 自测

⚠️ 在提交 PR 之前,请检查一下内容. ⚠️

  • 文档提供了,或者更新,或者不需要
  • Demo 提供了,或者更新,或者不需要
  • Ts 类型定义提供了,或者更新,或者不需要
  • Changelog 提供了,或者不需要

🚀 Summary

copilot:summary

🔍 Walkthrough

copilot:walkthrough

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] ReactVTable.ListTable 中配置 plugins 后运行报错

1 participant