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