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