출처: 이에이트(주)
hasChildrenActivities: true
인 항목들만 선별적으로 요청
루트 노드 리스트: /root/activities?projectId=${projectId}
자식 노드 중 hasChildrenActivities: true
인 노드에 대해만 병렬적으로 추가 요청:
/child/activities?activityId=${activityId}
이 과정은 재귀 함수 + Promise.all
을 통해 병렬로 처리되며, 이후 결과를 flatTree
구조로 정제하여 클라이언트 측 상태로 통합 관리
이후 날짜 변경이나 구조 변경 시점에 나머지 노드들은 Lazy Loading 방식으로 필요한 시점에만 요청하여 성능 최적화
Activity 일정 변경
출처: 이에이트(주)
🪜 Activity 트리 순서 및 계층 변경 (상/하/좌/우)
hasChildDocuments
값을 기준으로 하위 폴더 존재 여부를 판단하고, isExpanded
가 true일 때만 useQuery
를 통해 자식 폴더 데이터를 요청한 뒤, Folder
컴포넌트를 재귀적으로 호출해 트리를 구성했습니다.