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