문제: - 조건부 컨테이너 내부의 modal-repeater-table 컴포넌트가 데이터 업데이트 불가 - ConditionalSectionViewer가 RealtimePreview에 formData/onFormDataChange 미전달 해결: - ConditionalSectionViewer.tsx: RealtimePreview에 formData, onFormDataChange props 추가 - DynamicComponentRenderer.tsx: 디버깅 로그 정리 - ScreenModal.tsx: 디버깅 로그 정리 영향: - 수주 등록 화면 품목 추가 기능 정상 작동 - 조건부 컨테이너 내부 모든 폼 컴포넌트 데이터 바인딩 정상화 Refs: #수주관리 #modal-repeater-table #ConditionalContainer
4.6 KiB
4.6 KiB
Modal Repeater Table 디버깅 가이드
📊 콘솔 로그 확인 순서
새로고침 후 수주 등록 모달을 열고, 아래 순서대로 콘솔 로그를 확인하세요:
1️⃣ 컴포넌트 마운트 (초기 로드)
🎬 ModalRepeaterTableComponent 마운트: {
config: {...},
propColumns: [...],
columns: [...],
columnsLength: N, // ⚠️ 0이면 문제!
value: [],
valueLength: 0,
sourceTable: "item_info",
sourceColumns: [...],
uniqueField: "item_number"
}
✅ 정상:
columnsLength: 8(품번, 품명, 규격, 재질, 수량, 단가, 금액, 납기일)columns배열에 각 컬럼의field,label,type정보가 있어야 함
❌ 문제:
columnsLength: 0→ 이것이 문제의 원인!- 빈 배열이면 테이블에 컬럼이 표시되지 않음
2️⃣ 항목 검색 모달 열림
🚪 모달 열림 - uniqueField: "item_number", multiSelect: true
3️⃣ 품목 체크 (선택)
🖱️ 행 클릭: {
item: { item_number: "SLI-2025-0003", item_name: "실리콘 고무 시트", ... },
uniqueField: "item_number",
itemValue: "SLI-2025-0003",
currentSelected: 0,
selectedValues: []
}
✅ 매칭 발견: { selectedValue: "SLI-2025-0003", itemValue: "SLI-2025-0003", uniqueField: "item_number" }
4️⃣ 추가 버튼 클릭
✅ ItemSelectionModal 추가 버튼 클릭: {
selectedCount: 1,
selectedItems: [{ item_number: "SLI-2025-0003", item_name: "실리콘 고무 시트", ... }],
uniqueField: "item_number"
}
5️⃣ 데이터 추가 처리
➕ handleAddItems 호출: {
selectedItems: [{ item_number: "SLI-2025-0003", ... }],
currentValue: [],
columns: [...], // ⚠️ 여기도 확인!
calculationRules: [...]
}
📝 기본값 적용 후: [{ item_number: "SLI-2025-0003", quantity: 1, ... }]
🔢 계산 필드 적용 후: [{ item_number: "SLI-2025-0003", quantity: 1, selling_price: 1000, amount: 1000, ... }]
✅ 최종 데이터 (onChange 호출): [{ item_number: "SLI-2025-0003", quantity: 1, selling_price: 1000, amount: 1000, ... }]
6️⃣ Renderer 업데이트
🔄 ModalRepeaterTableRenderer onChange 호출: {
previousValue: [],
newValue: [{ item_number: "SLI-2025-0003", ... }]
}
7️⃣ value 변경 감지
📦 ModalRepeaterTableComponent value 변경: {
valueLength: 1,
value: [{ item_number: "SLI-2025-0003", ... }],
columns: [...] // ⚠️ 여기도 확인!
}
8️⃣ 테이블 리렌더링
📊 RepeaterTable 데이터 업데이트: {
rowCount: 1,
data: [{ item_number: "SLI-2025-0003", ... }],
columns: ["item_number", "item_name", "specification", "material", "quantity", "selling_price", "amount", "delivery_date"]
}
🔍 문제 진단
Case 1: columns가 비어있음 (columnsLength: 0)
원인:
- 화면관리 시스템에서 modal-repeater-table 컴포넌트의
columns설정을 하지 않음 - DB에 컬럼 설정이 저장되지 않음
해결:
- 화면 관리 페이지로 이동
- 해당 화면 편집
- modal-repeater-table 컴포넌트 선택
- 우측 설정 패널에서 "컬럼 설정" 탭 열기
- 다음 컬럼들을 추가:
- 품번 (item_number, text, 편집불가)
- 품명 (item_name, text, 편집불가)
- 규격 (specification, text, 편집불가)
- 재질 (material, text, 편집불가)
- 수량 (quantity, number, 편집가능, 기본값: 1)
- 단가 (selling_price, number, 편집가능)
- 금액 (amount, number, 편집불가, 계산필드)
- 납기일 (delivery_date, date, 편집가능)
- 저장
Case 2: 로그가 8번까지 나오는데 화면에 안 보임
원인:
- React 리렌더링 문제
- 화면관리 시스템의 상태 동기화 문제
해결:
- 브라우저 개발자 도구 → Elements 탭
#component-comp_5jdmuzai .border.rounded-md table tbody찾기- 실제 DOM에
<tr>요소가 추가되었는지 확인 - 추가되었다면 CSS 문제 (display: none 등)
- 추가 안 되었다면 컴포넌트 렌더링 문제
Case 3: 로그가 5번까지만 나오고 멈춤
원인:
onChange콜백이 제대로 전달되지 않음- Renderer의
updateComponent가 작동하지 않음
해결:
- 이미 수정한
ModalRepeaterTableRenderer.tsx코드 확인 handleChange함수가 호출되는지 확인
📝 다음 단계
위 로그를 모두 복사해서 공유해주세요. 특히:
- 🎬 마운트 로그의
columnsLength값 - 로그가 어디까지 출력되는지
- Elements 탭에서
tbody내부 HTML 구조
이 정보로 정확한 문제를 진단할 수 있습니다!