LVRS Storyboard Frame

components/navigation/Navigator.svx

Path: components/navigation/Navigator.svx

Last modified:

네비게이터

위치: qml/components/navigation/Navigator.qml

Navigator는 활성 PageRouter 탐색을 위한 글로벌 싱글턴 대표입니다.

목적

  • 한 줄의 앱 전체 탐색 호출을 허용합니다.
  • 라우터 등록 스택을 추적하고 활성 라우터를 선택합니다.
  • 프록시 경로/구성 요소 탐색 및 백 스택 작업.

속성

  • router
  • routerStack
  • hasRouter
  • currentPath
  • depth

라우터 수명주기 방법

  • 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()를 호출하면 작동하지 않으며 상위 공급 측 흐름 설계에서 탐색 버그를 숨길 수 있습니다.