LVRS Storyboard Frame
components/navigation/Navigator.svx
Path: components/navigation/Navigator.svx
네비게이터
위치: qml/components/navigation/Navigator.qml
Navigator는 활성 PageRouter 탐색을 위한 글로벌 싱글턴 대표입니다.
목적
- 한 줄의 앱 전체 탐색 호출을 허용합니다.
- 라우터 등록 스택을 추적하고 활성 라우터를 선택합니다.
- 프록시 경로/구성 요소 탐색 및 백 스택 작업.
속성
routerrouterStackhasRoutercurrentPathdepth
라우터 수명주기 방법
registerRouter(targetRouter)unregisterRouter(targetRouter?)
등록 순서는 라우터가 상위 항목을 공유할 때 형제 순서를 고려한 다음 추가로 대체됩니다.
탐색 방법
경로 기반:
go(path, params)replace(path, params)setRoot(path, params)back()popToRoot()
구성 요소 기반:
goTo(component, params)replaceWith(component, params)setRootComponent(component, params)
사용법
import LVRS 1.0 as LV
LV.LabelButton {
text: "Open Reports"
onClicked: LV.Navigator.go("/reports")
}
동작 원리
- 활성 라우터는
routerStack의 꼬리입니다. - 가능한 라우터가 없으면 모든 탐색 방법은
false를 반환합니다. - 라우터 활성화 변경 시 지원되는 경우 추적기 동기화 후크(
syncViewStateTracker)가 호출됩니다.
중첩 라우터 전략
중첩된 라우터가 있는 애플리케이션에서는 등록/등록 취소 순서에 따라 활성 라우터 확인이 결정됩니다. 중첩된 탐색 영역을 탑재/마운트 해제할 때 명시적인 등록 경계를 사용하세요.
디버그 팁
경로 오류를 진단하기 전에 디버그 패널에서 Navigator.currentPath 및 Navigator.depth를 확인하여 전역 대상 라우터 상태를 확인하세요.
레시피: 세이프 백 액션
import LVRS 1.0 as LV
function safeBack() {
if (LV.Navigator.depth > 1)
LV.Navigator.back()
}
실패 패턴
단일 항목 스택에서 깊이 가드 없이 back()를 호출하면 작동하지 않으며 상위 공급 측 흐름 설계에서 탐색 버그를 숨길 수 있습니다.