From cddce40f35c8fd6f6c25cdbfed6fa0866cb6b062 Mon Sep 17 00:00:00 2001 From: kjs Date: Tue, 18 Nov 2025 10:02:27 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=B2=AB=20=EA=B8=80=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EC=8B=9C=20=ED=8F=AC=EC=BB=A4=EC=8A=A4=20?= =?UTF-8?q?=EC=9C=A0=EC=A7=80=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - handleAddGroupEntry: + 추가 버튼 클릭 시 미리 빈 entry를 배열에 추가 - handleFieldChange: 기존 entry 업데이트만 수행 (새로운 entry 추가 로직 제거) - 이제 첫 글자 입력 시에도 배열 길이가 변하지 않아 포커스가 유지됨 --- .../SelectedItemsDetailInputComponent.tsx | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputComponent.tsx b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputComponent.tsx index b50c32fe..a70d8e74 100644 --- a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputComponent.tsx +++ b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputComponent.tsx @@ -263,14 +263,14 @@ export const SelectedItemsDetailInputComponent: React.FC { setItems((prevItems) => { - const updatedItems = prevItems.map((item) => { + return prevItems.map((item) => { if (item.id !== itemId) return item; const groupEntries = item.fieldGroups[groupId] || []; const existingEntryIndex = groupEntries.findIndex((e) => e.id === entryId); if (existingEntryIndex >= 0) { - // 기존 entry 업데이트 + // 기존 entry 업데이트 (항상 이 경로로만 진입) const updatedEntries = [...groupEntries]; updatedEntries[existingEntryIndex] = { ...updatedEntries[existingEntryIndex], @@ -284,22 +284,11 @@ export const SelectedItemsDetailInputComponent: React.FC { const newEntryId = `entry-${Date.now()}`; + + // 🔧 미리 빈 entry를 추가하여 리렌더링 방지 + setItems((prevItems) => { + return prevItems.map((item) => { + if (item.id !== itemId) return item; + + const groupEntries = item.fieldGroups[groupId] || []; + const newEntry: GroupEntry = { id: newEntryId }; + + return { + ...item, + fieldGroups: { + ...item.fieldGroups, + [groupId]: [...groupEntries, newEntry], + }, + }; + }); + }); + setIsEditing(true); setEditingItemId(itemId); setEditingDetailId(newEntryId);