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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<void> 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<void> | 异常返回结果。 | 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<void>): 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<void> | 是 | 异常响应回调。 | 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<RouterState> 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.Full。 1197 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.Full。 1250 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.Lite。 1298 1299| 名称 | 类型 | 必填 | 说明 | 1300| ------ | ------ | ---- | ------------------------------------------------------------ | 1301| url | string | 是 | 表示目标页面的url,可以用以下两种格式:<br/>- 页面绝对路径,由配置文件中pages列表提供,例如:<br/> - pages/index/index<br/> - pages/detail/detail<br/>- 特殊值,如果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.Full。 1315 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```