# NavRouter The **NavRouter** component provides default processing logic for responding to clicks, eliminating the need for manual logic definition. > **NOTE** > > This component is deprecated since API version 13. You are advised to use [NavPathStack](ts-basic-components-navigation.md#navpathstack10) in conjunction with the **navDestination** attribute for page routing. > > This component is supported since API version 9. Updates will be marked with a superscript to indicate their earliest API version. ## Child Components This component must contain two child components, the second of which must be [NavDestination](ts-basic-components-navdestination.md). > **NOTE** > > > 1. If there is only one child component, the navigation to the **NavDestination** component does not work. > 2. If there is only the **NavDestination** child component, the navigation does not work. > 3. If there are more than two child components, the excess child components are not displayed. > 4. If the second child component is not **NavDestination**, the navigation does not work. ## APIs ### NavRouter NavRouter() **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full ### NavRouter10+ NavRouter(value: RouteInfo) Provides route information so that clicking the **NavRouter** component redirects the user to the specified navigation destination page. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------------------------------- | ---- | ------------- | | value | [RouteInfo](#routeinfo10) | Yes | Route information.| ## Attributes In addition to the [universal attributes](ts-universal-attributes-size.md), the following attributes are supported. ### mode10+ mode(mode: NavRouteMode) Sets the route mode used for redirecting the user from the **NavRouter** component to the specified navigation destination page. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full **Parameters** | Name | Type | Mandatory | Description | | ----------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | | mode | [NavRouteMode](#navroutemode) | Yes | Route mode used for redirection.
Default value: **NavRouteMode.PUSH_WITH_RECREATE**| ## RouteInfo10+ **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full | Name | Type | Mandatory| Description | | -------------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | name | string | Yes | Name of the navigation destination page to be redirected to.| | param | unknown | No | Parameter transferred during redirection.| ## NavRouteMode **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full | Name | Description | | ----- | ---------------- | | PUSH_WITH_RECREATE | The new navigation destination page replaces the current one. The current page is destroyed, but the information about this page is retained in the navigation stack.| | PUSH | The new navigation destination page overwrites the current one. The current page is not destroyed, and the information about this page is retained in the navigation stack.| | REPLACE | The new navigation destination page replaces the current one. The current page is destroyed, and the information about this page is removed from the navigation stack.| ## Events ### onStateChange onStateChange(callback: (isActivated: boolean) => void) Called when the component activation status changes. **onStateChange(true)** is called when the **NavRouter** component is activated and its **NavDestination** child component is loaded. **onStateChange(false)** is called when the **NavDestination** child component is not displayed. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.ArkUI.ArkUI.Full **Parameters** | Name | Type | Mandatory| Description | | ----------- | ------- | ---- | --------------------------------------- | | isActivated | boolean | Yes | Component activation status. The value **true** means that component is activated, and **false** means the opposite.| ## Example ```ts // xxx.ets @Entry @Component struct NavRouterExample { @State isActiveWLAN: boolean = false @State isActiveBluetooth: boolean = false build() { Navigation() { NavRouter() { Row() { Row() .width(30) .height(30) .borderRadius(30) .margin({ left: 3, right: 10 }) .backgroundColor(Color.Pink) Text(`WLAN`) .fontSize(22) .fontWeight(500) .textAlign(TextAlign.Center) } .width('90%') .height(60) NavDestination() { Flex({ direction: FlexDirection.Row }) { Text('No WLAN available.').fontSize(30).padding({ left: 15 }) } }.title("WLAN") } .margin({ top: 10, bottom: 10 }) .backgroundColor(this.isActiveWLAN ? '#ccc' : '#fff') .borderRadius(20) .mode(NavRouteMode.PUSH_WITH_RECREATE) .onStateChange((isActivated: boolean) => { this.isActiveWLAN = isActivated }) NavRouter() { Row() { Row() .width(30) .height(30) .borderRadius(30) .margin({ left: 3, right: 10 }) .backgroundColor(Color.Pink) Text(`Bluetooth`) .fontSize(22) .fontWeight(500) .textAlign(TextAlign.Center) } .width('90%') .height(60) NavDestination() { Flex({ direction: FlexDirection.Row }) { Text('No Bluetooth device available.').fontSize(30).padding({ left: 15 }) } }.title("Bluetooth") } .margin({ top: 10, bottom: 10 }) .backgroundColor(this.isActiveBluetooth ? '#ccc' : '#fff') .borderRadius(20) .mode(NavRouteMode.REPLACE) .onStateChange((isActivated: boolean) => { this.isActiveBluetooth = isActivated }) } .height('100%') .width('100%') .title('Settings') .backgroundColor("#F2F3F5") .titleMode(NavigationTitleMode.Free) .mode(NavigationMode.Auto) } } ``` ![NavRouter](./figures/NavRouter.gif)