• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @system.router (页面路由)
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @mayaolll-->
5<!--Designer: @jiangdayuan-->
6<!--Tester: @lxl007-->
7<!--Adviser: @HelloCrease-->
8
9通过不同的uri访问不同的页面。
10
11> **说明:**
12>
13> - 从API version 8 开始,该接口不再维护,推荐使用新接口[`@ohos.router`](js-apis-router.md)。
14>
15>
16> - 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
17
18
19## 导入模块
20
21
22```ts
23import router from '@system.router';
24```
25
26## router.push
27
28push(options: RouterOptions): void
29
30跳转到应用内的指定页面。
31
32**系统能力:** SystemCapability.ArkUI.ArkUI.Full
33
34**参数:**
35
36| 参数名     | 类型                              | 必填   | 说明                         |
37| ------- | ------------------------------- | ---- | -------------------------- |
38| options | [RouterOptions](#routeroptions) | 是    | 页面路由参数,详细请参考RouterOptions。 |
39
40**示例:**
41
42```ts
43// 在当前页面中
44import router from '@system.router';
45class A{
46  pushPage() {
47    router.push({
48      uri: 'pages/routerpage2/routerpage2',
49      params: {
50        data1: 'message',
51        data2: {
52          data3: [123, 456, 789]
53        }
54      }
55    });
56  }
57}
58export default new A()
59```
60
61
62```ts
63// 在routerpage2页面中
64class B{
65  data:Record<string,string> = {'data1': 'default'}
66  data2:Record<string,number[]> = {'data3': [1, 2, 3]}
67  onInit() {
68    console.info('showData1:' + this.data.data1);
69    console.info('showData3:' + this.data2.data3);
70  }
71}
72export default new B()
73```
74
75> **说明:**
76> 页面路由栈支持的最大Page数量为32。
77
78
79## router.replace
80
81replace(options: RouterOptions): void
82
83用应用内的某个页面替换当前页面,并销毁被替换的页面。
84
85**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
86
87**参数:**
88
89| 参数名     | 类型                              | 必填   | 说明                         |
90| ------- | ------------------------------- | ---- | -------------------------- |
91| options | [RouterOptions](#routeroptions) | 是    | 页面路由参数,详细请参考RouterOptions。 |
92
93**示例:**
94
95```ts
96// 在当前页面中
97import router from '@system.router';
98class C{
99  replacePage() {
100    router.replace({
101      uri: 'pages/detail/detail',
102      params: {
103        data1: 'message'
104      }
105    });
106  }
107}
108export default new C()
109```
110
111
112```ts
113// 在detail页面中
114class Area {
115  data:Record<string,string> = {'data1': 'default'}
116  onInit() {
117    console.info(`showData1: ${JSON.stringify(this.data)}`);
118  }
119}
120export default new Area()
121```
122
123## router.back
124
125back(options?: BackRouterOptions): void
126
127返回上一页面或指定的页面。
128
129**系统能力:** SystemCapability.ArkUI.ArkUI.Full
130
131**参数:**
132
133| 参数名     | 类型                                      | 必填   | 说明                      |
134| ------- | --------------------------------------- | ---- | ----------------------- |
135| options | [BackRouterOptions](#backrouteroptions) | 否    | 详细请参考BackRouterOptions。 |
136
137**示例:**
138
139```ts
140// index页面
141import router from '@system.router';
142class D{
143  indexPushPage() {
144    router.push({
145      uri: 'pages/detail/detail'
146    });
147  }
148}
149export default new D()
150```
151
152
153```ts
154// detail页面
155import router from '@system.router';
156class E{
157  detailPushPage() {
158    router.push({
159      uri: 'pages/mall/mall'
160    });
161  }
162}
163export default new E()
164```
165
166
167```ts
168// mall页面通过back,将返回detail页面
169import router from '@system.router';
170class F{
171  mallBackPage() {
172    router.back();
173  }
174}
175export default new F()
176```
177
178
179```ts
180// detail页面通过back,将返回index页面
181import router from '@system.router';
182class G{
183  defaultBack() {
184    router.back();
185  }
186}
187export default new G()
188```
189
190
191```ts
192// 通过back,返回到detail页面
193import router from '@system.router';
194class H{
195  backToDetail() {
196    router.back({uri:'pages/detail/detail'});
197  }
198}
199export default new H()
200```
201
202> **说明:**
203> 示例中的uri字段是页面路由,由配置文件中的pages列表指定。
204
205## router.getParams<sup>7+</sup>
206
207getParams(): ParamsInterface
208
209获取当前页面的参数信息。
210
211**系统能力:** SystemCapability.ArkUI.ArkUI.Full
212
213**返回值:**
214
215| 类型                                  | 说明                    |
216| ----------------------------------- | --------------------- |
217| [ParamsInterface](#paramsinterface) | 详细请参见ParamsInterface。 |
218
219## router.clear
220
221clear(): void
222
223清空页面栈中的所有历史页面,仅保留当前页面作为栈顶页面。
224
225**系统能力:** SystemCapability.ArkUI.ArkUI.Full
226
227**示例:**
228
229```ts
230import router from '@system.router';
231class I{
232  clearPage() {
233    router.clear();
234  }
235}
236export default new I()
237```
238
239## router.getLength
240
241getLength(): string
242
243获取当前在页面栈内的页面数量。
244
245**系统能力:** SystemCapability.ArkUI.ArkUI.Full
246
247**返回值:**
248
249| 类型     | 说明                 |
250| ------ | ------------------ |
251| string | 页面数量,页面栈支持最大数值是32。 |
252
253**示例:**
254
255```ts
256import router from '@system.router';
257class J{
258  getLength() {
259    let size = router.getLength();
260    console.log('pages stack size = ' + size);
261  }
262}
263export default new J()
264```
265
266## router.getState
267
268getState(): RouterState
269
270获取当前页面的状态信息。
271
272**系统能力:** SystemCapability.ArkUI.ArkUI.Full
273
274**返回值:**
275
276| 参数类型                        | 说明                |
277| --------------------------- | ----------------- |
278| [RouterState](#routerstate) | 详细请参见RouterState。 |
279
280**示例:**
281
282```ts
283import router from '@system.router';
284class K{
285  getState() {
286    let page = router.getState();
287    console.log('current index = ' + page.index);
288    console.log('current name = ' + page.name);
289    console.log('current path = ' + page.path);
290  }
291}
292export default new K()
293```
294
295## router.enableAlertBeforeBackPage<sup>6+</sup>
296
297enableAlertBeforeBackPage(options: EnableAlertBeforeBackPageOptions): void
298
299开启页面返回询问对话框。
300
301**系统能力:** SystemCapability.ArkUI.ArkUI.Full
302
303**参数:**
304
305| 参数名     | 类型                                       | 必填   | 说明                                     |
306| ------- | ---------------------------------------- | ---- | -------------------------------------- |
307| options | [EnableAlertBeforeBackPageOptions](#enablealertbeforebackpageoptions6) | 是    | 详细请参见EnableAlertBeforeBackPageOptions。 |
308
309**示例:**
310
311```ts
312import router from '@system.router';
313class L{
314  enableAlertBeforeBackPage() {
315    router.enableAlertBeforeBackPage({
316      message: 'Message Info',
317      success: ()=> {
318        console.log('success');
319      },
320      cancel: ()=> {
321        console.log('cancel');
322      }
323    });
324  }
325}
326export default new L()
327```
328
329## router.disableAlertBeforeBackPage<sup>6+</sup>
330
331disableAlertBeforeBackPage(options?: DisableAlertBeforeBackPageOptions): void
332
333禁用页面返回询问对话框。
334
335**系统能力:** SystemCapability.ArkUI.ArkUI.Full
336
337**参数:**
338
339| 参数名     | 类型                                       | 必填   | 说明                                      |
340| ------- | ---------------------------------------- | ---- | --------------------------------------- |
341| options | [DisableAlertBeforeBackPageOptions](#disablealertbeforebackpageoptions6) | 否    | 详细请参见DisableAlertBeforeBackPageOptions。 |
342
343**示例:**
344
345```ts
346import router from '@system.router';
347class Z{
348  disableAlertBeforeBackPage() {
349    router.disableAlertBeforeBackPage({
350      success: ()=> {
351        console.log('success');
352      },
353      cancel: ()=> {
354        console.log('cancel');
355      }
356    });
357  }
358}
359export default new Z()
360```
361
362## RouterOptions
363
364定义路由器的选项。
365
366**系统能力:**  以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Lite
367
368| 名称   | 类型 | 必填 | 说明                                                         |
369| ------ | -------- | ---- | ------------------------------------------------------------ |
370| uri | string   | 是   | 目标页面的uri,可以是以下的两种格式:<br/>1. 页面的绝对路径,由config.json文件中的页面列表提供。例如:<br/>- pages/index/index<br/> - pages/detail/detail<br/>2. 特定路径。如果URI为斜杠(/),则显示主页。 |
371| params | object   | 否   | 表示路由跳转时要同时传递到目标页面的数据。跳转到目标页面后,使用router.getParams()获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。 |
372
373
374## BackRouterOptions
375
376定义路由器返回的选项。
377
378**系统能力:**  以下各项对应的系统能力有所不同,详见下表。
379
380| 名称   | 类型 | 必填 | 说明                                                         |
381| ------ | -------- | ---- | ------------------------------------------------------------ |
382| uri<sup>7+</sup> | string   | 否   | 返回到指定uri的界面,如果页面栈上没有uri页面,则不响应该情况。如果uri未设置,则返回上一页。 <br>**系统能力:** SystemCapability.ArkUI.ArkUI.Full |
383| params<sup>7+</sup> | object   | 否   | 跳转时要同时传递到目标页面的数据。 <br>**系统能力:** SystemCapability.ArkUI.ArkUI.Lite |
384
385## RouterState
386
387定义路由器的状态。
388
389**系统能力:**  以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full
390
391| 名称    | 类型   | 必填   | 说明                                 |
392| ----- | ------ | ---- | ---------------------------------- |
393| index | number | 是    | 表示当前页面在页面栈中的索引。从栈底到栈顶,index从1开始递增。 |
394| name  | string | 是    | 表示当前页面的名称,即对应文件名。                  |
395| path  | string | 是    | 表示当前页面的路径。                         |
396
397## EnableAlertBeforeBackPageOptions<sup>6+</sup>
398
399定义EnableAlertBeforeBackPage选项。
400
401**系统能力:**  以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full
402
403| 名称     | 类型                 | 必填 | 说明                                               |
404| -------- | ------------------------ | ---- | -------------------------------------------------- |
405| message  | string                   | 是   | 询问对话框内容。                                   |
406| success  | (errMsg: string) => void | 否   | 用户选择对话框确认按钮时触发,errMsg表示返回信息。 |
407| cancel   | (errMsg: string) => void | 否   | 用户选择对话框取消按钮时触发,errMsg表示返回信息。 |
408| complete | () => void               | 否   | 当对话框关闭时触发该回调。                           |
409
410## DisableAlertBeforeBackPageOptions<sup>6+</sup>
411
412定义DisableAlertBeforeBackPage参数选项。
413
414**系统能力:**  以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full
415
416| 名称     | 类型                 | 必填 | 说明                                               |
417| -------- | ------------------------ | ---- | -------------------------------------------------- |
418| success  | (errMsg: string) => void | 否   | 关闭询问对话框能力成功时触发,errMsg表示返回信息。 |
419| cancel   | (errMsg: string) => void | 否   | 关闭询问对话框能力失败时触发,errMsg表示返回信息。 |
420| complete | () => void               | 否   | 当对话框关闭时触发该回调。                           |
421
422## ParamsInterface
423
424| 名称          | 参数类型 | 说明           |
425| ------------- | -------- | -------------- |
426| [key: string] | object   | 路由参数列表。 |
427