Commit 37d31ea8 by weiyudumei

fix: 修复自动提交触发2次的问题,只在firstQaFlag首次变为true时触发一次

parent b14e994b
......@@ -68,8 +68,15 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({
// 如果 firstQaFlag 为 true,自动提交(仅对流式返回的新记录,历史记录不会渲染此组件)
useEffect(() => {
// 如果 firstQaFlag 为 true,尝试自动提交(不检查是否从 false 变为 true,因为组件可能是在 firstQaFlag 已经是 true 时才渲染的)
if (answer.firstQaFlag === true && !hasAutoSubmittedRef.current && !isSubmitting && !isCompleted) {
// 如果 firstQaFlag 为 true,尝试自动提交
// 检查 firstQaFlag 是否从 false/undefined 变为 true(首次变为 true)
const isFirstQaFlagChangedToTrue = answer.firstQaFlag === true && lastFirstQaFlagRef.current !== true
// 更新记录的值
lastFirstQaFlagRef.current = answer.firstQaFlag
// 只在 firstQaFlag 首次变为 true 且尚未自动提交时执行
if (isFirstQaFlagChangedToTrue && !hasAutoSubmittedRef.current && !isSubmitting && !isCompleted) {
// 检查是否有字段(textFields 不为空)
if (textFields.length === 0) {
console.log('[CardWorkflowForm] 自动提交:textFields 为空,跳过')
......@@ -93,7 +100,9 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({
})
if (allFieldsHaveValues) {
// 立即设置 hasAutoSubmittedRef,防止重复提交
hasAutoSubmittedRef.current = true
// 构建 paramMap
const paramMap: Record<string, string> = {}
textFields.forEach((field) => {
......@@ -119,11 +128,10 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({
})
}
}
// 更新记录的值
lastFirstQaFlagRef.current = answer.firstQaFlag
// 移除 onSubmitWorkflow 作为依赖项,使用 useRef 保存引用,避免函数引用变化导致重复触发
// 移除 onSubmitWorkflow 和 textFields 作为依赖项,使用 useRef 保存引用,避免函数引用变化或 textFields 更新导致重复触发
// textFields 更新不应该触发重新提交,因为我们已经检查了 firstQaFlag 的变化
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [answer.firstQaFlag, isSubmitting, isCompleted, searchParams, textFields])
}, [answer.firstQaFlag, isSubmitting, isCompleted, searchParams])
const handleInputChange = (key: string, value: string) => {
setFormValues(prev => ({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment