fix: 修复 UserSelect Effect 依赖导致的无限更新

### 问题

进入“工作流 → 流程监控 → 流程实例”时报错:
Maximum update depth exceeded。

UserSelect 将 useEffectEvent 返回的 initModal、resetModal 加入了
useEffect 依赖数组。这些函数引用会随渲染变化,Effect 内的状态更新
又触发重新渲染,导致反复重置或初始化。

### 修改

- Effect 仅依赖 open,在弹窗开关变化时初始化或重置。
- 修正 useEffectEvent 返回引用稳定的错误注释。

### 验证

- 流程实例页面正常显示。
- 申请人弹窗打开、勾选、取消正常。
- “运行中 / 已完成”切换正常。
- Oxlint、TypeScript 检查通过。

Signed-off-by: 李中原 <5021361+lizhongyuan3@user.noreply.gitee.com>
This commit is contained in:
李中原 2026-10-15 03:02:09 +00:00 committed by Gitee
parent 693fd61e5d
commit 5151775e4f
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -127,9 +127,9 @@ export default function UserSelect({
// useEffectEvent 在 effect 中调用是 React 官方推荐用法 // useEffectEvent 在 effect 中调用是 React 官方推荐用法
// oxlint-disable-next-line react/set-state-in-effect // oxlint-disable-next-line react/set-state-in-effect
initModal(); initModal();
// initModal/resetModal 为 useEffectEvent 引用稳定 无需作为依赖 // Effect Event 每次渲染的引用可能变化,不应作为依赖;弹窗初始化和重置只跟随 open
// oxlint-disable-next-line react/exhaustive-effect-dependencies // oxlint-disable-next-line react/exhaustive-effect-dependencies
}, [initModal, open, resetModal]); }, [open]);
const handleQuery = async () => { const handleQuery = async () => {
const values = form.getFieldsValue(); const values = form.getFieldsValue();