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