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![NavRouter](./figures/NavRouter.gif)