1e41f4b71Sopenharmony_ci# NavRouter 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 从API Version 13 开始,该组件不再维护,推荐使用[NavPathStack](ts-basic-components-navigation.md#navpathstack10)配合navDestination属性进行页面路由。 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## 子组件 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci必须包含两个子组件,其中第二个子组件必须为[NavDestination](ts-basic-components-navdestination.md)。 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci> **说明:** 16e41f4b71Sopenharmony_ci> 17e41f4b71Sopenharmony_ci> 子组件个数异常时: 18e41f4b71Sopenharmony_ci> 1. 有且仅有1个时,触发路由到NavDestination的能力失效。 19e41f4b71Sopenharmony_ci> 2. 有且仅有1个时,且使用NavDestination场景下,不进行路由。 20e41f4b71Sopenharmony_ci> 3. 大于2个时,后续的子组件不显示。 21e41f4b71Sopenharmony_ci> 4. 第二个子组件不为NavDestination时,触发路由功能失效。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci## 接口 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci### NavRouter 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ciNavRouter() 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci### NavRouter<sup>10+</sup> 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ciNavRouter(value: RouteInfo) 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci提供路由信息,指定点击NavRouter时,要跳转的NavDestination页面。 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**参数:** 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 46e41f4b71Sopenharmony_ci| ------- | ----------------------------------- | ---- | ------------- | 47e41f4b71Sopenharmony_ci| value | [RouteInfo](#routeinfo10对象说明) | 是 | 路由信息 | 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci## 属性 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性: 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci### mode<sup>10+</sup> 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_cimode(mode: NavRouteMode) 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci设置指定点击NavRouter跳转到NavDestination页面时,使用的路由模式。 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**参数:** 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 66e41f4b71Sopenharmony_ci| ----------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | 67e41f4b71Sopenharmony_ci| mode | [NavRouteMode](#navroutemode枚举类型说明) | 是 | 指定点击NavRouter跳转到NavDestination页面时,使用的路由模式。<br/>默认值:NavRouteMode.PUSH_WITH_RECREATE | 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci## RouteInfo<sup>10+</sup>对象说明 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 76e41f4b71Sopenharmony_ci| -------------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 77e41f4b71Sopenharmony_ci| name | string | 是 | 点击NavRouter跳转到的NavDestination页面的名称。 | 78e41f4b71Sopenharmony_ci| param | unknown | 否 | 点击NavRouter跳转到NavDestination页面时,传递的参数。 | 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci## NavRouteMode枚举类型说明 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci| 名称 | 说明 | 85e41f4b71Sopenharmony_ci| ----- | ---------------- | 86e41f4b71Sopenharmony_ci| PUSH_WITH_RECREATE | 跳转到新的NavDestination页面时,替换当前显示的NavDestination页面,页面销毁,但该页面信息仍保留在路由栈中。 | 87e41f4b71Sopenharmony_ci| PUSH | 跳转到新的NavDestination页面时,覆盖当前显示的NavDestination页面,该页面不销毁,且页面信息保留在路由栈中。 | 88e41f4b71Sopenharmony_ci| REPLACE | 跳转到新的NavDestination页面时,替换当前显示的NavDestination页面,页面销毁,且该页面信息从路由栈中清除。 | 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci## 事件 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci### onStateChange 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_cionStateChange(callback: (isActivated: boolean) => void) 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci组件激活状态切换时触发该回调。开发者点击激活NavRouter,加载对应的NavDestination子组件时,回调onStateChange(true)。NavRouter对应的NavDestination子组件不再显示时,回调onStateChange(false)。 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci**参数:** 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 105e41f4b71Sopenharmony_ci| ----------- | ------- | ---- | --------------------------------------- | 106e41f4b71Sopenharmony_ci| isActivated | boolean | 是 | isActivated为true时表示激活,为false时表示未激活。 | 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci## 示例 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci```ts 111e41f4b71Sopenharmony_ci// xxx.ets 112e41f4b71Sopenharmony_ci@Entry 113e41f4b71Sopenharmony_ci@Component 114e41f4b71Sopenharmony_cistruct NavRouterExample { 115e41f4b71Sopenharmony_ci @State isActiveWLAN: boolean = false 116e41f4b71Sopenharmony_ci @State isActiveBluetooth: boolean = false 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci build() { 119e41f4b71Sopenharmony_ci Navigation() { 120e41f4b71Sopenharmony_ci NavRouter() { 121e41f4b71Sopenharmony_ci Row() { 122e41f4b71Sopenharmony_ci Row() 123e41f4b71Sopenharmony_ci .width(30) 124e41f4b71Sopenharmony_ci .height(30) 125e41f4b71Sopenharmony_ci .borderRadius(30) 126e41f4b71Sopenharmony_ci .margin({ left: 3, right: 10 }) 127e41f4b71Sopenharmony_ci .backgroundColor(Color.Pink) 128e41f4b71Sopenharmony_ci Text(`WLAN`) 129e41f4b71Sopenharmony_ci .fontSize(22) 130e41f4b71Sopenharmony_ci .fontWeight(500) 131e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 132e41f4b71Sopenharmony_ci } 133e41f4b71Sopenharmony_ci .width('90%') 134e41f4b71Sopenharmony_ci .height(60) 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci NavDestination() { 137e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Row }) { 138e41f4b71Sopenharmony_ci Text('未找到可用WLAN').fontSize(30).padding({ left: 15 }) 139e41f4b71Sopenharmony_ci } 140e41f4b71Sopenharmony_ci }.title("WLAN") 141e41f4b71Sopenharmony_ci } 142e41f4b71Sopenharmony_ci .margin({ top: 10, bottom: 10 }) 143e41f4b71Sopenharmony_ci .backgroundColor(this.isActiveWLAN ? '#ccc' : '#fff') 144e41f4b71Sopenharmony_ci .borderRadius(20) 145e41f4b71Sopenharmony_ci .mode(NavRouteMode.PUSH_WITH_RECREATE) 146e41f4b71Sopenharmony_ci .onStateChange((isActivated: boolean) => { 147e41f4b71Sopenharmony_ci this.isActiveWLAN = isActivated 148e41f4b71Sopenharmony_ci }) 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci NavRouter() { 151e41f4b71Sopenharmony_ci Row() { 152e41f4b71Sopenharmony_ci Row() 153e41f4b71Sopenharmony_ci .width(30) 154e41f4b71Sopenharmony_ci .height(30) 155e41f4b71Sopenharmony_ci .borderRadius(30) 156e41f4b71Sopenharmony_ci .margin({ left: 3, right: 10 }) 157e41f4b71Sopenharmony_ci .backgroundColor(Color.Pink) 158e41f4b71Sopenharmony_ci Text(`蓝牙`) 159e41f4b71Sopenharmony_ci .fontSize(22) 160e41f4b71Sopenharmony_ci .fontWeight(500) 161e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 162e41f4b71Sopenharmony_ci } 163e41f4b71Sopenharmony_ci .width('90%') 164e41f4b71Sopenharmony_ci .height(60) 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci NavDestination() { 167e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Row }) { 168e41f4b71Sopenharmony_ci Text('未找到可用蓝牙').fontSize(30).padding({ left: 15 }) 169e41f4b71Sopenharmony_ci } 170e41f4b71Sopenharmony_ci }.title("蓝牙") 171e41f4b71Sopenharmony_ci } 172e41f4b71Sopenharmony_ci .margin({ top: 10, bottom: 10 }) 173e41f4b71Sopenharmony_ci .backgroundColor(this.isActiveBluetooth ? '#ccc' : '#fff') 174e41f4b71Sopenharmony_ci .borderRadius(20) 175e41f4b71Sopenharmony_ci .mode(NavRouteMode.REPLACE) 176e41f4b71Sopenharmony_ci .onStateChange((isActivated: boolean) => { 177e41f4b71Sopenharmony_ci this.isActiveBluetooth = isActivated 178e41f4b71Sopenharmony_ci }) 179e41f4b71Sopenharmony_ci } 180e41f4b71Sopenharmony_ci .height('100%') 181e41f4b71Sopenharmony_ci .width('100%') 182e41f4b71Sopenharmony_ci .title('设置') 183e41f4b71Sopenharmony_ci .backgroundColor("#F2F3F5") 184e41f4b71Sopenharmony_ci .titleMode(NavigationTitleMode.Free) 185e41f4b71Sopenharmony_ci .mode(NavigationMode.Auto) 186e41f4b71Sopenharmony_ci } 187e41f4b71Sopenharmony_ci} 188e41f4b71Sopenharmony_ci``` 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci