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