From d2c75329cf75d79d3e021bb838cffc5d83a77369 Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Thu, 12 Mar 2026 23:20:51 +0800 Subject: [PATCH] fix: kbform react error --- .../home/knowledge/components/kb-form/KBForm.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/web/src/app/home/knowledge/components/kb-form/KBForm.tsx b/web/src/app/home/knowledge/components/kb-form/KBForm.tsx index 25f5c5ca..4f6b52fe 100644 --- a/web/src/app/home/knowledge/components/kb-form/KBForm.tsx +++ b/web/src/app/home/knowledge/components/kb-form/KBForm.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import Link from 'next/link'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; @@ -242,11 +242,17 @@ export default function KBForm({ }; // Convert creation schema to dynamic form items (same as ExternalKBForm) - const configFormItems = parseCreationSchema(selectedEngine?.creation_schema); + // Memoize to avoid regenerating UUIDs on every render, which would cause + // DynamicFormComponent's useEffect to re-fire and trigger an infinite loop. + const configFormItems = useMemo( + () => parseCreationSchema(selectedEngine?.creation_schema), + [selectedEngine?.creation_schema], + ); // Convert retrieval schema to dynamic form items - const retrievalFormItems = parseCreationSchema( - selectedEngine?.retrieval_schema, + const retrievalFormItems = useMemo( + () => parseCreationSchema(selectedEngine?.retrieval_schema), + [selectedEngine?.retrieval_schema], ); // Show loading state