1# @ohos.router (页面路由)(不推荐)
2
3本模块提供通过不同的url访问不同的页面,包括跳转到应用内的指定页面、同应用内的某个页面替换当前页面、返回上一页面或指定的页面等。
4
5推荐使用[Navigation组件](../../ui/arkts-navigation-navigation.md)作为应用路由框架。
6
7> **说明**
8>
9> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
10>
11> - 页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中页面还处于渲染阶段,禁止调用页面路由方法。
12>
13> - 本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见[UIContext](./js-apis-arkui-UIContext.md#uicontext)说明。
14>
15> - 从API version 10开始,可以通过使用[UIContext](./js-apis-arkui-UIContext.md#uicontext)中的[getRouter](./js-apis-arkui-UIContext.md#getrouter)方法获取当前UI上下文关联的[Router](./js-apis-arkui-UIContext.md#router)对象。
16>
17> - 如果使用传入callback形式的[pushUrl](#routerpushurl9-1)或[pushNamedRoute](#routerpushnamedroute10-1)接口,callback中通过[getLength](#routergetlength)等接口获取的栈信息为中间态的栈信息,可能与栈操作完全结束后,再通过[getLength](#routergetlength)等接口获取的栈信息不一致。
18
19## 导入模块
20
21```
22import { router } from '@kit.ArkUI';
23```
24
25## router.pushUrl<sup>9+</sup>
26
27pushUrl(options: RouterOptions): Promise&lt;void&gt;
28
29跳转到应用内的指定页面。
30
31**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
32
33**系统能力:** SystemCapability.ArkUI.ArkUI.Full
34
35**参数:**
36
37| 参数名     | 类型                              | 必填   | 说明        |
38| ------- | ------------------------------- | ---- | --------- |
39| options | [RouterOptions](#routeroptions) | 是    | 跳转页面描述信息。 |
40
41**返回值:**
42
43| 类型                | 说明        |
44| ------------------- | --------- |
45| Promise&lt;void&gt; | 异常返回结果。 |
46
47**错误码:**
48
49以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
50> **说明**:
51>
52> 该接口返回的以下错误码均为string类型。
53
54| 错误码ID   | 错误信息 |
55| --------- | ------- |
56| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
57| 100001    | Internal error. |
58| 100002    | Uri error. The URI of the page to redirect is incorrect or does not exist. |
59| 100003    | Page stack error. Too many pages are pushed. |
60
61**示例:**
62
63```ts
64import { BusinessError } from '@kit.BasicServicesKit';
65
66class innerParams {
67  data3:number[]
68
69  constructor(tuple:number[]) {
70    this.data3 = tuple
71  }
72}
73
74class routerParams {
75  data1:string
76  data2:innerParams
77
78  constructor(str:string, tuple:number[]) {
79    this.data1 = str
80    this.data2 = new innerParams(tuple)
81  }
82}
83
84try {
85  router.pushUrl({
86    url: 'pages/routerpage2',
87    params: new routerParams('message' ,[123,456,789])
88  })
89} catch (err) {
90  console.error(`pushUrl failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
91}
92```
93
94## router.pushUrl<sup>9+</sup>
95
96pushUrl(options: RouterOptions, callback: AsyncCallback&lt;void&gt;): void
97
98跳转到应用内的指定页面。
99
100**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.ArkUI.ArkUI.Full
103
104**参数:**
105
106| 参数名     | 类型                              | 必填   | 说明        |
107| ------- | ------------------------------- | ---- | --------- |
108| options | [RouterOptions](#routeroptions) | 是    | 跳转页面描述信息。 |
109| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
110
111**错误码:**
112
113以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
114> **说明**:
115>
116> 该接口返回的以下错误码均为string类型。
117
118| 错误码ID   | 错误信息 |
119| --------- | ------- |
120| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
121| 100001    | Internal error. |
122| 100002    | Uri error. The URI of the page to redirect is incorrect or does not exist. |
123| 100003    | Page stack error. Too many pages are pushed. |
124
125**示例:**
126
127```ts
128class innerParams {
129  data3:number[]
130
131  constructor(tuple:number[]) {
132    this.data3 = tuple
133  }
134}
135
136class routerParams {
137  data1:string
138  data2:innerParams
139
140  constructor(str:string, tuple:number[]) {
141    this.data1 = str
142    this.data2 = new innerParams(tuple)
143  }
144}
145
146router.pushUrl({
147  url: 'pages/routerpage2',
148  params: new routerParams('message' ,[123,456,789])
149}, (err) => {
150  if (err) {
151    console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
152    return;
153  }
154  console.info('pushUrl success');
155})
156```
157## router.pushUrl<sup>9+</sup>
158
159pushUrl(options: RouterOptions, mode: RouterMode): Promise&lt;void&gt;
160
161跳转到应用内的指定页面。
162
163**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
164
165**系统能力:** SystemCapability.ArkUI.ArkUI.Full
166
167**参数:**
168
169| 参数名     | 类型                              | 必填   | 说明         |
170| ------- | ------------------------------- | ---- | ---------- |
171| options | [RouterOptions](#routeroptions) | 是    | 跳转页面描述信息。  |
172| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
173
174**返回值:**
175
176| 类型                | 说明        |
177| ------------------- | --------- |
178| Promise&lt;void&gt; | 异常返回结果。 |
179
180**错误码:**
181
182以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
183> **说明**:
184>
185> 该接口返回的以下错误码均为string类型。
186
187| 错误码ID   | 错误信息 |
188| --------- | ------- |
189| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
190| 100001    | Internal error. |
191| 100002    | Uri error. The URI of the page to redirect is incorrect or does not exist. |
192| 100003    | Page stack error. Too many pages are pushed. |
193
194**示例:**
195
196```ts
197import { BusinessError } from '@kit.BasicServicesKit';
198
199class innerParams {
200  data3:number[]
201
202  constructor(tuple:number[]) {
203    this.data3 = tuple
204  }
205}
206
207class routerParams {
208  data1:string
209  data2:innerParams
210
211  constructor(str:string, tuple:number[]) {
212    this.data1 = str
213    this.data2 = new innerParams(tuple)
214  }
215}
216
217try {
218  router.pushUrl({
219    url: 'pages/routerpage2',
220    params: new routerParams('message' ,[123,456,789])
221  }, router.RouterMode.Standard)
222} catch (err) {
223  console.error(`pushUrl failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
224}
225```
226
227## router.pushUrl<sup>9+</sup>
228
229pushUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
230
231跳转到应用内的指定页面。
232
233**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
234
235**系统能力:** SystemCapability.ArkUI.ArkUI.Full
236
237**参数:**
238
239| 参数名     | 类型                              | 必填   | 说明         |
240| ------- | ------------------------------- | ---- | ---------- |
241| options | [RouterOptions](#routeroptions) | 是    | 跳转页面描述信息。  |
242| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
243| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
244
245**错误码:**
246
247以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
248> **说明**:
249>
250> 该接口返回的以下错误码均为string类型。
251
252| 错误码ID   | 错误信息 |
253| --------- | ------- |
254| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
255| 100001    | Internal error. |
256| 100002    | Uri error. The URI of the page to redirect is incorrect or does not exist. |
257| 100003    | Page stack error. Too many pages are pushed. |
258
259**示例:**
260
261```ts
262class innerParams {
263  data3:number[]
264
265  constructor(tuple:number[]) {
266    this.data3 = tuple
267  }
268}
269
270class routerParams {
271  data1:string
272  data2:innerParams
273
274  constructor(str:string, tuple:number[]) {
275    this.data1 = str
276    this.data2 = new innerParams(tuple)
277  }
278}
279
280router.pushUrl({
281  url: 'pages/routerpage2',
282  params: new routerParams('message' ,[123,456,789])
283}, router.RouterMode.Standard, (err) => {
284  if (err) {
285    console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
286    return;
287  }
288  console.info('pushUrl success');
289})
290```
291
292## router.replaceUrl<sup>9+</sup>
293
294replaceUrl(options: RouterOptions): Promise&lt;void&gt;
295
296用应用内的某个页面替换当前页面,并销毁被替换的页面。不支持设置页面转场动效,如需设置,推荐使用[Navigation组件](../../ui/arkts-navigation-navigation.md)。
297
298**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
299
300**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
301
302**参数:**
303
304| 参数名  | 类型                            | 必填 | 说明               |
305| ------- | ------------------------------- | ---- | ------------------ |
306| options | [RouterOptions](#routeroptions) | 是   | 替换页面描述信息。 |
307
308**返回值:**
309
310| 类型                | 说明        |
311| ------------------- | --------- |
312| Promise&lt;void&gt; | 异常返回结果。 |
313
314**错误码:**
315
316以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
317> **说明**:
318>
319> 该接口返回的以下错误码均为string类型。
320
321| 错误码ID   | 错误信息 |
322| --------- | ------- |
323| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
324| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
325| 200002    | Uri error. The URI of the page to be used for replacement is incorrect or does not exist. |
326
327**示例:**
328
329```ts
330import { BusinessError } from '@kit.BasicServicesKit';
331
332class routerParams {
333  data1:string
334
335  constructor(str:string) {
336    this.data1 = str
337  }
338}
339
340try {
341  router.replaceUrl({
342    url: 'pages/detail',
343    params: new routerParams('message')
344  })
345} catch (err) {
346  console.error(`replaceUrl failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
347}
348```
349
350## router.replaceUrl<sup>9+</sup>
351
352replaceUrl(options: RouterOptions, callback: AsyncCallback&lt;void&gt;): void
353
354用应用内的某个页面替换当前页面,并销毁被替换的页面。
355
356**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
357
358**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
359
360**参数:**
361
362| 参数名  | 类型                            | 必填 | 说明               |
363| ------- | ------------------------------- | ---- | ------------------ |
364| options | [RouterOptions](#routeroptions) | 是   | 替换页面描述信息。 |
365| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
366
367**错误码:**
368
369以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
370> **说明**:
371>
372> 该接口返回的以下错误码均为string类型。
373
374| 错误码ID   | 错误信息 |
375| --------- | ------- |
376| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
377| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
378| 200002    | Uri error. The URI of the page to be used for replacement is incorrect or does not exist. |
379
380**示例:**
381
382```ts
383class routerParams {
384  data1:string
385
386  constructor(str:string) {
387    this.data1 = str
388  }
389}
390
391router.replaceUrl({
392  url: 'pages/detail',
393  params: new routerParams('message')
394}, (err) => {
395  if (err) {
396    console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
397    return;
398  }
399  console.info('replaceUrl success');
400})
401```
402
403## router.replaceUrl<sup>9+</sup>
404
405replaceUrl(options: RouterOptions, mode: RouterMode): Promise&lt;void&gt;
406
407用应用内的某个页面替换当前页面,并销毁被替换的页面。
408
409**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
410
411**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
412
413**参数:**
414
415| 参数名     | 类型                              | 必填   | 说明         |
416| ------- | ------------------------------- | ---- | ---------- |
417| options | [RouterOptions](#routeroptions) | 是    | 替换页面描述信息。  |
418| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
419
420
421**返回值:**
422
423| 类型                | 说明        |
424| ------------------- | --------- |
425| Promise&lt;void&gt; | 异常返回结果。 |
426
427**错误码:**
428
429以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
430> **说明**:
431>
432> 该接口返回的以下错误码均为string类型。
433
434| 错误码ID   | 错误信息 |
435| --------- | ------- |
436| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
437| 100001    | Failed to get the delegate. This error code is thrown only in the standard system. |
438| 200002    | Uri error. The URI of the page to be used for replacement is incorrect or does not exist. |
439
440**示例:**
441
442```ts
443import { BusinessError } from '@kit.BasicServicesKit';
444
445class routerParams {
446  data1:string
447
448  constructor(str:string) {
449    this.data1 = str
450  }
451}
452
453try {
454  router.replaceUrl({
455    url: 'pages/detail',
456    params: new routerParams('message')
457  }, router.RouterMode.Standard)
458} catch (err) {
459  console.error(`replaceUrl failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
460}
461```
462
463## router.replaceUrl<sup>9+</sup>
464
465replaceUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
466
467用应用内的某个页面替换当前页面,并销毁被替换的页面。
468
469**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
470
471**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
472
473**参数:**
474
475| 参数名     | 类型                              | 必填   | 说明         |
476| ------- | ------------------------------- | ---- | ---------- |
477| options | [RouterOptions](#routeroptions) | 是    | 替换页面描述信息。  |
478| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
479| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
480
481**错误码:**
482
483以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
484> **说明**:
485>
486> 该接口返回的以下错误码均为string类型。
487
488| 错误码ID   | 错误信息 |
489| --------- | ------- |
490| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
491| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
492| 200002    | Uri error. The URI of the page to be used for replacement is incorrect or does not exist. |
493
494**示例:**
495
496```ts
497class routerParams {
498  data1:string
499
500  constructor(str:string) {
501    this.data1 = str
502  }
503}
504
505router.replaceUrl({
506  url: 'pages/detail',
507  params: new routerParams('message')
508}, router.RouterMode.Standard, (err) => {
509  if (err) {
510    console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
511    return;
512  }
513  console.info('replaceUrl success');
514});
515
516```
517
518## router.pushNamedRoute<sup>10+</sup>
519
520pushNamedRoute(options: NamedRouterOptions): Promise&lt;void&gt;
521
522跳转到指定的命名路由页面。
523
524**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
525
526**系统能力:** SystemCapability.ArkUI.ArkUI.Full
527
528**参数:**
529
530| 参数名     | 类型                              | 必填   | 说明        |
531| ------- | ------------------------------- | ---- | --------- |
532| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 跳转页面描述信息。 |
533
534**返回值:**
535
536| 类型                | 说明        |
537| ------------------- | --------- |
538| Promise&lt;void&gt; | 异常返回结果。 |
539
540**错误码:**
541
542以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
543> **说明**:
544>
545> 该接口返回的以下错误码均为string类型。
546
547| 错误码ID   | 错误信息 |
548| --------- | ------- |
549| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
550| 100001    | Internal error. |
551| 100003    | Page stack error. Too many pages are pushed. |
552| 100004    | Named route error. The named route does not exist. |
553
554**示例:**
555
556```ts
557import { BusinessError } from '@kit.BasicServicesKit';
558
559class innerParams {
560  data3:number[]
561
562  constructor(tuple:number[]) {
563    this.data3 = tuple
564  }
565}
566
567class routerParams {
568  data1:string
569  data2:innerParams
570
571  constructor(str:string, tuple:number[]) {
572    this.data1 = str
573    this.data2 = new innerParams(tuple)
574  }
575}
576
577try {
578  router.pushNamedRoute({
579    name: 'myPage',
580    params: new routerParams('message' ,[123,456,789])
581  })
582} catch (err) {
583  console.error(`pushNamedRoute failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
584}
585```
586
587详细示例请参考:[UI开发-页面路由](../../ui/arkts-routing.md#命名路由)
588
589## router.pushNamedRoute<sup>10+</sup>
590
591pushNamedRoute(options: NamedRouterOptions, callback: AsyncCallback&lt;void&gt;): void
592
593跳转到指定的命名路由页面。
594
595**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
596
597**系统能力:** SystemCapability.ArkUI.ArkUI.Full
598
599**参数:**
600
601| 参数名     | 类型                              | 必填   | 说明        |
602| ------- | ------------------------------- | ---- | --------- |
603| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 跳转页面描述信息。 |
604| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
605
606**错误码:**
607
608以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
609> **说明**:
610>
611> 该接口返回的以下错误码均为string类型。
612
613| 错误码ID   | 错误信息 |
614| --------- | ------- |
615| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
616| 100001    | Internal error. |
617| 100003    | Page stack error. Too many pages are pushed. |
618| 100004    | Named route error. The named route does not exist. |
619
620**示例:**
621
622```ts
623class innerParams {
624  data3:number[]
625
626  constructor(tuple:number[]) {
627    this.data3 = tuple
628  }
629}
630
631class routerParams {
632  data1:string
633  data2:innerParams
634
635  constructor(str:string, tuple:number[]) {
636    this.data1 = str
637    this.data2 = new innerParams(tuple)
638  }
639}
640
641router.pushNamedRoute({
642  name: 'myPage',
643  params: new routerParams('message' ,[123,456,789])
644}, (err) => {
645  if (err) {
646    console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
647    return;
648  }
649  console.info('pushNamedRoute success');
650})
651```
652## router.pushNamedRoute<sup>10+</sup>
653
654pushNamedRoute(options: NamedRouterOptions, mode: RouterMode): Promise&lt;void&gt;
655
656跳转到指定的命名路由页面。
657
658**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
659
660**系统能力:** SystemCapability.ArkUI.ArkUI.Full
661
662**参数:**
663
664| 参数名     | 类型                              | 必填   | 说明         |
665| ------- | ------------------------------- | ---- | ---------- |
666| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 跳转页面描述信息。  |
667| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
668
669**返回值:**
670
671| 类型                | 说明        |
672| ------------------- | --------- |
673| Promise&lt;void&gt; | 异常返回结果。 |
674
675**错误码:**
676
677以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
678> **说明**:
679>
680> 该接口返回的以下错误码均为string类型。
681
682| 错误码ID   | 错误信息 |
683| --------- | ------- |
684| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
685| 100001    | Internal error. |
686| 100003    | Page stack error. Too many pages are pushed. |
687| 100004    | Named route error. The named route does not exist. |
688
689**示例:**
690
691```ts
692import { BusinessError } from '@kit.BasicServicesKit';
693
694class innerParams {
695  data3:number[]
696
697  constructor(tuple:number[]) {
698    this.data3 = tuple
699  }
700}
701
702class routerParams {
703  data1:string
704  data2:innerParams
705
706  constructor(str:string, tuple:number[]) {
707    this.data1 = str
708    this.data2 = new innerParams(tuple)
709  }
710}
711
712try {
713  router.pushNamedRoute({
714    name: 'myPage',
715    params: new routerParams('message' ,[123,456,789])
716  }, router.RouterMode.Standard)
717} catch (err) {
718  console.error(`pushNamedRoute failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
719}
720```
721
722## router.pushNamedRoute<sup>10+</sup>
723
724pushNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
725
726跳转到指定的命名路由页面。
727
728**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
729
730**系统能力:** SystemCapability.ArkUI.ArkUI.Full
731
732**参数:**
733
734| 参数名     | 类型                              | 必填   | 说明         |
735| ------- | ------------------------------- | ---- | ---------- |
736| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 跳转页面描述信息。  |
737| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
738| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
739
740**错误码:**
741
742以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
743> **说明**:
744>
745> 该接口返回的以下错误码均为string类型。
746
747| 错误码ID   | 错误信息 |
748| --------- | ------- |
749| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
750| 100001    | Internal error. |
751| 100003    | Page stack error. Too many pages are pushed. |
752| 100004    | Named route error. The named route does not exist. |
753
754**示例:**
755
756```ts
757class innerParams {
758  data3:number[]
759
760  constructor(tuple:number[]) {
761    this.data3 = tuple
762  }
763}
764
765class routerParams {
766  data1:string
767  data2:innerParams
768
769  constructor(str:string, tuple:number[]) {
770    this.data1 = str
771    this.data2 = new innerParams(tuple)
772  }
773}
774
775router.pushNamedRoute({
776  name: 'myPage',
777  params: new routerParams('message' ,[123,456,789])
778}, router.RouterMode.Standard, (err) => {
779  if (err) {
780    console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
781    return;
782  }
783  console.info('pushNamedRoute success');
784})
785```
786
787## router.replaceNamedRoute<sup>10+</sup>
788
789replaceNamedRoute(options: NamedRouterOptions): Promise&lt;void&gt;
790
791用指定的命名路由页面替换当前页面,并销毁被替换的页面。
792
793**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
794
795**系统能力:** SystemCapability.ArkUI.ArkUI.Full
796
797**参数:**
798
799| 参数名  | 类型                            | 必填 | 说明               |
800| ------- | ------------------------------- | ---- | ------------------ |
801| options | [NamedRouterOptions](#namedrouteroptions10) | 是   | 替换页面描述信息。 |
802
803**返回值:**
804
805| 类型                | 说明        |
806| ------------------- | --------- |
807| Promise&lt;void&gt; | 异常返回结果。 |
808
809**错误码:**
810
811以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
812> **说明**:
813>
814> 该接口返回的以下错误码均为string类型。
815
816| 错误码ID   | 错误信息 |
817| --------- | ------- |
818| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
819| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
820| 100004    | Named route error. The named route does not exist. |
821
822**示例:**
823
824```ts
825import { BusinessError } from '@kit.BasicServicesKit';
826
827class routerParams {
828  data1:string
829
830  constructor(str:string) {
831    this.data1 = str
832  }
833}
834
835try {
836  router.replaceNamedRoute({
837    name: 'myPage',
838    params: new routerParams('message')
839  })
840} catch (err) {
841  console.error(`replaceNamedRoute failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
842}
843```
844
845## router.replaceNamedRoute<sup>10+</sup>
846
847replaceNamedRoute(options: NamedRouterOptions, callback: AsyncCallback&lt;void&gt;): void
848
849用指定的命名路由页面替换当前页面,并销毁被替换的页面。
850
851**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
852
853**系统能力:** SystemCapability.ArkUI.ArkUI.Full
854
855**参数:**
856
857| 参数名  | 类型                            | 必填 | 说明               |
858| ------- | ------------------------------- | ---- | ------------------ |
859| options | [NamedRouterOptions](#namedrouteroptions10) | 是   | 替换页面描述信息。 |
860| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
861
862**错误码:**
863
864以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
865> **说明**:
866>
867> 该接口返回的以下错误码均为string类型。
868
869| 错误码ID   | 错误信息 |
870| --------- | ------- |
871| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
872| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
873| 100004    | Named route error. The named route does not exist. |
874
875**示例:**
876
877```ts
878class routerParams {
879  data1:string
880
881  constructor(str:string) {
882    this.data1 = str
883  }
884}
885
886router.replaceNamedRoute({
887  name: 'myPage',
888  params: new routerParams('message')
889}, (err) => {
890  if (err) {
891    console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
892    return;
893  }
894  console.info('replaceNamedRoute success');
895})
896```
897
898## router.replaceNamedRoute<sup>10+</sup>
899
900replaceNamedRoute(options: NamedRouterOptions, mode: RouterMode): Promise&lt;void&gt;
901
902用指定的命名路由页面替换当前页面,并销毁被替换的页面。
903
904**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
905
906**系统能力:** SystemCapability.ArkUI.ArkUI.Full
907
908**参数:**
909
910| 参数名     | 类型                              | 必填   | 说明         |
911| ------- | ------------------------------- | ---- | ---------- |
912| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 替换页面描述信息。  |
913| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
914
915
916**返回值:**
917
918| 类型                | 说明        |
919| ------------------- | --------- |
920| Promise&lt;void&gt; | 异常返回结果。 |
921
922**错误码:**
923
924以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
925> **说明**:
926>
927> 该接口返回的以下错误码均为string类型。
928
929| 错误码ID   | 错误信息 |
930| --------- | ------- |
931| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
932| 100001    | Failed to get the delegate. This error code is thrown only in the standard system. |
933| 100004    | Named route error. The named route does not exist. |
934
935**示例:**
936
937```ts
938import { BusinessError } from '@kit.BasicServicesKit';
939
940class routerParams {
941  data1:string
942
943  constructor(str:string) {
944    this.data1 = str
945  }
946}
947
948try {
949  router.replaceNamedRoute({
950    name: 'myPage',
951    params: new routerParams('message')
952  }, router.RouterMode.Standard)
953} catch (err) {
954  console.error(`replaceNamedRoute failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
955}
956```
957
958## router.replaceNamedRoute<sup>10+</sup>
959
960replaceNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
961
962用指定的命名路由页面替换当前页面,并销毁被替换的页面。
963
964**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
965
966**系统能力:** SystemCapability.ArkUI.ArkUI.Full
967
968**参数:**
969
970| 参数名     | 类型                              | 必填   | 说明         |
971| ------- | ------------------------------- | ---- | ---------- |
972| options | [NamedRouterOptions](#namedrouteroptions10) | 是    | 替换页面描述信息。  |
973| mode    | [RouterMode](#routermode9枚举说明)      | 是    | 跳转页面使用的模式。 |
974| callback | AsyncCallback&lt;void&gt;      | 是   | 异常响应回调。   |
975
976**错误码:**
977
978以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
979> **说明**:
980>
981> 该接口返回的以下错误码均为string类型。
982
983| 错误码ID   | 错误信息 |
984| --------- | ------- |
985| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
986| 100001    | The UI execution context is not found. This error code is thrown only in the standard system. |
987| 100004    | Named route error. The named route does not exist. |
988
989**示例:**
990
991```ts
992class routerParams {
993  data1:string
994
995  constructor(str:string) {
996    this.data1 = str
997  }
998}
999
1000router.replaceNamedRoute({
1001  name: 'myPage',
1002  params: new routerParams('message')
1003}, router.RouterMode.Standard, (err) => {
1004  if (err) {
1005    console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
1006    return;
1007  }
1008  console.info('replaceNamedRoute success');
1009});
1010
1011```
1012
1013## router.back
1014
1015back(options?: RouterOptions ): void
1016
1017返回上一页面或指定的页面,会删除当前页面与指定页面之间的所有页面。
1018
1019**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1020
1021**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1022
1023**参数:**
1024
1025| 参数名  | 类型                            | 必填 | 说明                                                         |
1026| ------- | ------------------------------- | ---- | ------------------------------------------------------------ |
1027| options | [RouterOptions](#routeroptions) | 否   | 返回页面描述信息,其中参数url指路由跳转时会返回到指定url的界面,如果页面栈上没有url页面,则不响应该情况。如果url未设置,则返回上一页,页面不会重新构建,页面栈里面的page不会回收,出栈后会被回收。back是返回接口,url设置为特殊值"/"不生效。如果是用命名路由的方式跳转,传入的url需是命名路由的名称。 |
1028
1029**示例:**
1030
1031```ts
1032router.back({url:'pages/detail'});
1033```
1034
1035## router.back<sup>12+</sup>
1036
1037back(index: number, params?: Object): void;
1038
1039返回指定的页面,会删除当前页面与指定页面之间的所有页面。
1040
1041**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1042
1043**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1044
1045**参数:**
1046
1047| 参数名     | 类型                              | 必填   | 说明         |
1048| ------- | ------------------------------- | ---- | ---------- |
1049| index | number | 是    | 跳转目标页面的索引值。  |
1050| params    | Object      | 否    | 页面返回时携带的参数。 |
1051
1052**示例:**
1053
1054```ts
1055router.back(1);
1056```
1057```ts
1058router.back(1, {info: '来自Home页'}); //携带参数返回
1059```
1060
1061## router.clear
1062
1063clear(): void
1064
1065清空页面栈中的所有历史页面,仅保留当前页面作为栈顶页面。
1066
1067**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1068
1069**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1070
1071**示例:**
1072
1073```ts
1074router.clear();
1075```
1076
1077## router.getLength
1078
1079getLength(): string
1080
1081获取当前在页面栈内的页面数量。
1082
1083**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1084
1085**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1086
1087**返回值:**
1088
1089| 类型     | 说明                 |
1090| ------ | ------------------ |
1091| string | 页面数量,页面栈支持最大数值是32。 |
1092
1093**示例:**
1094
1095```ts
1096let size = router.getLength();
1097console.log('pages stack size = ' + size);
1098```
1099
1100## router.getState
1101
1102getState(): RouterState
1103
1104获取栈顶页面的状态信息。
1105
1106**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1107
1108**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1109
1110**返回值:**
1111
1112| 类型                          | 说明      |
1113| --------------------------- | ------- |
1114| [RouterState](#routerstate) | 页面状态信息。 |
1115
1116**示例:**
1117
1118```ts
1119let page = router.getState();
1120console.log('current index = ' + page.index);
1121console.log('current name = ' + page.name);
1122console.log('current path = ' + page.path);
1123```
1124
1125## router.getStateByIndex<sup>12+</sup>
1126
1127getStateByIndex(index: number): RouterState | undefined
1128
1129通过索引值获取对应页面的状态信息。
1130
1131**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1132
1133**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1134
1135**参数:**
1136
1137| 参数名     | 类型                              | 必填   | 说明         |
1138| ------- | ------------------------------- | ---- | ---------- |
1139| index    | number | 是   | 表示要获取的页面索引。  |
1140
1141**返回值:**
1142
1143| 类型                          | 说明      |
1144| --------------------------- | ------- |
1145| [RouterState](#routerstate) \| undefined | 返回页面状态信息。索引不存在时返回undefined。 |
1146
1147**示例:**
1148
1149```ts
1150let options:router.RouterState | undefined = router.getStateByIndex(1);
1151if (options != undefined) {
1152  console.log('index = ' + options.index);
1153  console.log('name = ' + options.name);
1154  console.log('path = ' + options.path);
1155  console.log('params = ' + options.params);
1156}
1157```
1158## router.getStateByUrl<sup>12+</sup>
1159
1160getStateByUrl(url: string): Array&lt;RouterState&gt;
1161
1162通过url获取对应页面的状态信息。
1163
1164**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1165
1166**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1167
1168**参数:**
1169
1170| 参数名     | 类型                              | 必填   | 说明         |
1171| ------- | ------------------------------- | ---- | ---------- |
1172| url    | string | 是   | 表示要获取对应页面信息的url。  |
1173
1174**返回值:**
1175
1176| 类型                          | 说明      |
1177| --------------------------- | ------- |
1178| Array<[RouterState](#routerstate)> | 页面状态信息。 |
1179
1180**示例:**
1181
1182```ts
1183let options:Array<router.RouterState> = router.getStateByUrl('pages/index');
1184for (let i: number = 0; i < options.length; i++) {
1185  console.log('index = ' + options[i].index);
1186  console.log('name = ' + options[i].name);
1187  console.log('path = ' + options[i].path);
1188  console.log('params = ' + options[i].params);
1189}
1190```
1191
1192## RouterState
1193
1194页面状态信息。
1195
1196**系统能力:** SystemCapability.ArkUI.ArkUI.Full1197
1198| 名称  | 类型   | 必填 | 说明                                                         |
1199| ----- | ------ | ---- | ------------------------------------------------------------ |
1200| index | number | 是   | 表示当前页面在页面栈中的索引。从栈底到栈顶,index从1开始递增。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1201| name  | string | 是  | 表示当前页面的名称,即对应文件名。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1202| path  | string | 是   | 表示当前页面的路径。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1203| params<sup>12+</sup>  | Object |  是  | 表示当前页面携带的参数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                         |
1204
1205## router.showAlertBeforeBackPage<sup>9+</sup>
1206
1207showAlertBeforeBackPage(options: EnableAlertOptions): void
1208
1209开启页面返回询问对话框。
1210
1211**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1212
1213**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1214
1215**参数:**
1216
1217| 参数名     | 类型                                       | 必填   | 说明        |
1218| ------- | ---------------------------------------- | ---- | --------- |
1219| options | [EnableAlertOptions](#enablealertoptions) | 是    | 文本弹窗信息描述。 |
1220
1221**错误码:**
1222
1223以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.router(页面路由)](errorcode-router.md)错误码。
1224
1225| 错误码ID   | 错误信息 |
1226| --------- | ------- |
1227| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed.   |
1228| 100001    | Internal error. |
1229
1230**示例:**
1231
1232```ts
1233import { BusinessError } from '@kit.BasicServicesKit';
1234
1235try {
1236  router.showAlertBeforeBackPage({
1237    message: 'Message Info'
1238  });
1239} catch(err) {
1240  console.error(`showAlertBeforeBackPage failed, code is ${(err as BusinessError).code}, message is ${(err as BusinessError).message}`);
1241}
1242```
1243## EnableAlertOptions
1244
1245页面返回询问对话框选项。
1246
1247**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1248
1249**系统能力:** 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full1250
1251| 名称      | 类型     | 必填   | 说明       |
1252| ------- | ------ | ---- | -------- |
1253| message | string | 是    | 询问对话框内容。 |
1254
1255## router.hideAlertBeforeBackPage<sup>9+</sup>
1256
1257hideAlertBeforeBackPage(): void
1258
1259禁用页面返回询问对话框。
1260
1261**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1262
1263**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1264
1265**示例:**
1266
1267```ts
1268router.hideAlertBeforeBackPage();
1269```
1270
1271##  router.getParams
1272
1273getParams(): Object
1274
1275获取发起跳转的页面往当前页传入的参数。
1276
1277**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1278
1279**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1280
1281**返回值:**
1282
1283| 类型   | 说明                               |
1284| ------ | ---------------------------------- |
1285| object | 发起跳转的页面往当前页传入的参数。 |
1286
1287**示例:**
1288
1289```ts
1290router.getParams();
1291```
1292
1293## RouterOptions
1294
1295路由跳转选项。
1296
1297**系统能力:** SystemCapability.ArkUI.ArkUI.Lite1298
1299| 名称   | 类型   | 必填 | 说明                                                         |
1300| ------ | ------ | ---- | ------------------------------------------------------------ |
1301| url    | string | 是   | 表示目标页面的url,可以用以下两种格式:<br/>-&nbsp;页面绝对路径,由配置文件中pages列表提供,例如:<br/>&nbsp;&nbsp;-&nbsp;pages/index/index<br/>&nbsp;&nbsp;-&nbsp;pages/detail/detail<br/>-&nbsp;特殊值,如果url的值是"/",则跳转到首页,首页默认为页面跳转配置项src数组的第一个数据项。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1302| params | Object | 否   | 表示路由跳转时要同时传递到目标页面的数据,切换到其他页面时,当前接收的数据失效。跳转到目标页面后,使用router.getParams()获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。<br/>**说明:** <br/>params参数不能传递方法和系统接口返回的对象(例如,媒体接口定义和返回的PixelMap对象)。建议开发者提取系统接口返回的对象中需要被传递的基础类型属性,自行构造object类型对象进行传递。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1303| recoverable<sup>14+</sup> | boolean | 否   | 表示对应的页面是否可恢复,默认为true,表示可恢复。<br/>**说明:** <br/> 当应用退到后台,并且在未来的某个时间点,由于系统资源限制等原因被系统杀死,如果某个页面被设置成可恢复,那么该应用再次被拉到前台后系统可以恢复出页面,详细说明请参考[UIAbility备份恢复](../../application-models/ability-recover-guideline.md)。 |
1304
1305  > **说明:**
1306  > 页面路由栈支持的最大Page数量为32。
1307
1308## RouterMode<sup>9+</sup>枚举说明
1309
1310路由跳转模式。
1311
1312**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1313
1314**系统能力:** SystemCapability.ArkUI.ArkUI.Full1315
1316| 名称     | 说明                                                         |
1317| -------- | ------------------------------------------------------------ |
1318| Standard | 多实例模式,也是默认情况下的跳转模式。 <br/>目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。<br/>**说明:**  <br/>不使用路由跳转模式时,则按照默认的多实例模式进行跳转。 |
1319| Single   | 单实例模式。<br/>如果目标页面的url已经存在于页面栈中,则该url页面移动到栈顶。<br />如果目标页面的url在页面栈中不存在同url页面,则按照默认的多实例模式进行跳转。 |
1320
1321## NamedRouterOptions<sup>10+</sup>
1322
1323命名路由跳转选项。
1324
1325| 名称   | 类型   | 必填 | 说明                                                         |
1326| ------ | ------ | ---- | ------------------------------------------------------------ |
1327| name   | string | 是   | 表示目标命名路由页面的name。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 <br/>**系统能力:** SystemCapability.ArkUI.ArkUI.Full |
1328| params | Object | 否   | 表示路由跳转时要同时传递到目标页面的数据。跳转到目标页面后,使用router.getParams()获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。 <br/>**说明:** <br/>params参数不能传递方法和系统接口返回的对象(例如,媒体接口定义和返回的PixelMap对象)。建议开发者提取系统接口返回的对象中需要被传递的基础类型属性,自行构造object类型对象进行传递。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。<br/>**系统能力:** SystemCapability.ArkUI.ArkUI.Full  |
1329| recoverable<sup>14+</sup> | boolean | 否   | 表示对应的页面是否可恢复,默认为true,表示可恢复。<br/>**说明:** <br/> 当应用退到后台,并且在未来的某个时间点,由于系统资源限制等原因被系统杀死,如果某个页面被设置成可恢复,那么该应用再次被拉到前台后系统可以恢复出页面,详细说明请参考[UIAbility备份恢复](../../application-models/ability-recover-guideline.md)。 <br/>**系统能力:** SystemCapability.ArkUI.ArkUI.Lite |
1330
1331## 完整示例
1332
1333### 基于JS扩展的类Web开发范式
1334
1335以下代码仅适用于javascript文件,不适用于ArkTS文件
1336
1337<!--code_no_check-->
1338
1339```js
1340// 在当前页面中
1341export default {
1342  pushPage() {
1343    router.pushUrl({
1344      url: 'pages/detail/detail',
1345      params: {
1346        data1: 'message'
1347      }
1348    });
1349  }
1350}
1351```
1352<!--code_no_check-->
1353
1354```js
1355// 在detail页面中
1356export default {
1357  onInit() {
1358    console.info('showData1:' + router.getParams()['data1']);
1359  }
1360}
1361```
1362
1363### 基于TS扩展的声明式开发范式
1364
1365> **说明:**
1366>
1367> 直接使用router可能导致实例不明确的问题,建议使用[getUIContext](js-apis-arkui-UIContext.md#uicontext)获取UIContext实例,并使用[getRouter](js-apis-arkui-UIContext.md#getrouter)获取绑定实例的router。
1368
1369```ts
1370// 通过router.pushUrl跳转至目标页携带params参数
1371import { router } from '@kit.ArkUI';
1372import { BusinessError } from '@kit.BasicServicesKit'
1373
1374// 定义传递参数的类
1375class innerParams {
1376  array:number[]
1377
1378  constructor(tuple:number[]) {
1379    this.array = tuple
1380  }
1381}
1382
1383class routerParams {
1384  text:string
1385  data:innerParams
1386
1387  constructor(str:string, tuple:number[]) {
1388    this.text = str
1389    this.data = new innerParams(tuple)
1390  }
1391}
1392
1393@Entry
1394@Component
1395struct Index {
1396  async routePage() {
1397    let options:router.RouterOptions = {
1398      url: 'pages/second',
1399      params: new routerParams('这是第一页的值' ,[12, 45, 78])
1400    }
1401    try {
1402      // 建议使用this.getUIContext().getRouter().pushUrl()
1403      await router.pushUrl(options)
1404    } catch (err) {
1405      console.info(` fail callback, code: ${(err as BusinessError).code}, msg: ${(err as BusinessError).message}`)
1406    }
1407  }
1408
1409  build() {
1410    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
1411      Text('这是第一页')
1412        .fontSize(50)
1413        .fontWeight(FontWeight.Bold)
1414      Button() {
1415        Text('next page')
1416          .fontSize(25)
1417          .fontWeight(FontWeight.Bold)
1418      }.type(ButtonType.Capsule)
1419      .margin({ top: 20 })
1420      .backgroundColor('#ccc')
1421      .onClick(() => {
1422        this.routePage()
1423      })
1424    }
1425    .width('100%')
1426    .height('100%')
1427  }
1428}
1429```
1430
1431```ts
1432// 在second页面中接收传递过来的参数
1433import { router } from '@kit.ArkUI';
1434
1435class innerParams {
1436  array:number[]
1437
1438  constructor(tuple:number[]) {
1439    this.array = tuple
1440  }
1441}
1442
1443class routerParams {
1444  text:string
1445  data:innerParams
1446
1447  constructor(str:string, tuple:number[]) {
1448    this.text = str
1449    this.data = new innerParams(tuple)
1450  }
1451}
1452
1453@Entry
1454@Component
1455struct Second {
1456  private content: string = "这是第二页"
1457  // 建议使用this.getUIContext().getRouter().getParams()
1458  @State text: string = (router.getParams() as routerParams).text
1459  @State data: object = (router.getParams() as routerParams).data
1460  @State secondData: string = ''
1461
1462  build() {
1463    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
1464      Text(`${this.content}`)
1465        .fontSize(50)
1466        .fontWeight(FontWeight.Bold)
1467      Text(this.text)
1468        .fontSize(30)
1469        .onClick(() => {
1470          this.secondData = (this.data['array'][1]).toString()
1471        })
1472        .margin({ top: 20 })
1473      Text(`第一页传来的数值:${this.secondData}`)
1474        .fontSize(20)
1475        .margin({ top: 20 })
1476        .backgroundColor('red')
1477    }
1478    .width('100%')
1479    .height('100%')
1480  }
1481}
1482```
1483
1484## router.push<sup>(deprecated)</sup>
1485
1486push(options: RouterOptions): void
1487
1488跳转到应用内的指定页面。
1489
1490从API version9开始不再维护,建议使用[pushUrl<sup>9+</sup>](#routerpushurl9)
1491
1492**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1493
1494**参数:**
1495
1496| 参数名     | 类型                              | 必填   | 说明        |
1497| ------- | ------------------------------- | ---- | --------- |
1498| options | [RouterOptions](#routeroptions) | 是    | 跳转页面描述信息。 |
1499
1500
1501**示例:**
1502
1503```ts
1504class innerParams {
1505  data3:number[]
1506
1507  constructor(tuple:number[]) {
1508    this.data3 = tuple
1509  }
1510}
1511
1512class routerParams {
1513  data1:string
1514  data2:innerParams
1515
1516  constructor(str:string, tuple:number[]) {
1517    this.data1 = str
1518    this.data2 = new innerParams(tuple)
1519  }
1520}
1521
1522router.push({
1523  url: 'pages/routerpage2',
1524  params: new routerParams('message' ,[123,456,789])
1525});
1526```
1527
1528## router.replace<sup>(deprecated)</sup>
1529
1530replace(options: RouterOptions): void
1531
1532用应用内的某个页面替换当前页面,并销毁被替换的页面。
1533
1534从API version9开始不再维护,建议使用[replaceUrl<sup>9+</sup>](#routerreplaceurl9)
1535
1536**系统能力:** SystemCapability.ArkUI.ArkUI.Lite
1537
1538**参数:**
1539
1540| 参数名  | 类型                            | 必填 | 说明               |
1541| ------- | ------------------------------- | ---- | ------------------ |
1542| options | [RouterOptions](#routeroptions) | 是   | 替换页面描述信息。 |
1543
1544**示例:**
1545
1546```ts
1547class routerParams {
1548  data1:string
1549
1550  constructor(str:string) {
1551    this.data1 = str
1552  }
1553}
1554
1555router.replace({
1556  url: 'pages/detail',
1557  params: new routerParams('message')
1558});
1559```
1560
1561## router.enableAlertBeforeBackPage<sup>(deprecated)</sup>
1562
1563enableAlertBeforeBackPage(options: EnableAlertOptions): void
1564
1565开启页面返回询问对话框。
1566
1567从API version9开始不再维护,建议使用[showAlertBeforeBackPage<sup>9+</sup>](#routershowalertbeforebackpage9)
1568
1569**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1570
1571**参数:**
1572
1573| 参数名     | 类型                                       | 必填   | 说明        |
1574| ------- | ---------------------------------------- | ---- | --------- |
1575| options | [EnableAlertOptions](#enablealertoptions) | 是    | 文本弹窗信息描述。 |
1576
1577**示例:**
1578
1579```ts
1580router.enableAlertBeforeBackPage({
1581  message: 'Message Info'
1582});
1583```
1584
1585## router.disableAlertBeforeBackPage<sup>(deprecated)</sup>
1586
1587disableAlertBeforeBackPage(): void
1588
1589禁用页面返回询问对话框。
1590
1591从API version9开始不再维护,建议使用[hideAlertBeforeBackPage<sup>9+</sup>](#routerhidealertbeforebackpage9)
1592
1593**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1594
1595**示例:**
1596
1597```ts
1598router.disableAlertBeforeBackPage();
1599```