diff --git a/web/app/components/workflow/nodes/loop/use-config.ts b/web/app/components/workflow/nodes/loop/use-config.ts index 87f3d65a99..949488b2a5 100644 --- a/web/app/components/workflow/nodes/loop/use-config.ts +++ b/web/app/components/workflow/nodes/loop/use-config.ts @@ -47,14 +47,14 @@ const useConfig = (id: string, payload: LoopNodeType) => { }) const changeErrorResponseMode = useCallback((item: { value: unknown }) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { draft.error_handle_mode = item.value as ErrorHandleMode }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [inputs, handleInputsChange]) const handleAddCondition = useCallback((valueSelector, varItem) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { if (!draft.break_conditions) draft.break_conditions = [] @@ -66,34 +66,34 @@ const useConfig = (id: string, payload: LoopNodeType) => { value: varItem.type === VarType.boolean ? 'false' : '', }) }) - setInputs(newInputs) - }, [getIsVarFileAttribute, inputs, setInputs]) + handleInputsChange(newInputs) + }, [getIsVarFileAttribute, handleInputsChange]) const handleRemoveCondition = useCallback((conditionId) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { draft.break_conditions = draft.break_conditions?.filter(item => item.id !== conditionId) }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleUpdateCondition = useCallback((conditionId, newCondition) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { const targetCondition = draft.break_conditions?.find(item => item.id === conditionId) if (targetCondition) Object.assign(targetCondition, newCondition) }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleToggleConditionLogicalOperator = useCallback(() => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { draft.logical_operator = draft.logical_operator === LogicalOperator.and ? LogicalOperator.or : LogicalOperator.and }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleAddSubVariableCondition = useCallback((conditionId: string, key?: string) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { const condition = draft.break_conditions?.find(item => item.id === conditionId) if (!condition) return @@ -119,11 +119,11 @@ const useConfig = (id: string, payload: LoopNodeType) => { }) } }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleRemoveSubVariableCondition = useCallback((conditionId: string, subConditionId: string) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { const condition = draft.break_conditions?.find(item => item.id === conditionId) if (!condition) return @@ -133,11 +133,11 @@ const useConfig = (id: string, payload: LoopNodeType) => { if (subVarCondition) subVarCondition.conditions = subVarCondition.conditions.filter(item => item.id !== subConditionId) }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleUpdateSubVariableCondition = useCallback((conditionId, subConditionId, newSubCondition) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { const targetCondition = draft.break_conditions?.find(item => item.id === conditionId) if (targetCondition && targetCondition.sub_variable_condition) { const targetSubCondition = targetCondition.sub_variable_condition.conditions.find(item => item.id === subConditionId) @@ -145,24 +145,24 @@ const useConfig = (id: string, payload: LoopNodeType) => { Object.assign(targetSubCondition, newSubCondition) } }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleToggleSubVariableConditionLogicalOperator = useCallback((conditionId) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { const targetCondition = draft.break_conditions?.find(item => item.id === conditionId) if (targetCondition && targetCondition.sub_variable_condition) targetCondition.sub_variable_condition.logical_operator = targetCondition.sub_variable_condition.logical_operator === LogicalOperator.and ? LogicalOperator.or : LogicalOperator.and }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleUpdateLoopCount = useCallback((value: number) => { - const newInputs = produce(inputs, (draft) => { + const newInputs = produce(inputsRef.current, (draft) => { draft.loop_count = value }) - setInputs(newInputs) - }, [inputs, setInputs]) + handleInputsChange(newInputs) + }, [handleInputsChange]) const handleAddLoopVariable = useCallback(() => { const newInputs = produce(inputsRef.current, (draft) => {