頁面路由
說明
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
導入模塊
import router from '@ohos.router'
權限列表
無
router.push
push(options: RouterOptions): void
跳轉到應用內的指定頁面。
系統能力: SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | [RouterOptions] | 是 | 跳轉頁面描述信息。 |
示例:
// 在當前頁面中
export default {
pushPage() {
router.push({
url: 'pages/routerpage2/routerpage2',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
},
},
});
}
}
// 在routerpage2頁面中
export default {
data: {
data1: 'default',
data2: {
data3: [1, 2, 3]
}
},
onInit() {
console.info('showData1:' + this.data1);
console.info('showData3:' + this.data2.data3);
}
}
router.replace
replace(options: RouterOptions): void
用應用內的某個頁面替換當前頁面,并銷毀被替換的頁面。
系統能力: SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | [RouterOptions] | 是 | 替換頁面描述信息。 |
示例:
// 在當前頁面中
export default {
replacePage() {
router.replace({
url: 'pages/detail/detail',
params: {
data1: 'message',
},
});
}
}
// 在detail頁面中
export default {
data: {
data1: 'default'
},
onInit() {
console.info('showData1:' + this.data1)
}
}
router.back
back(options?: RouterOptions ): void
返回上一頁面或指定的頁面。
系統能力: SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | [RouterOptions] | 是 | 返回頁面描述信息,其中參數url指路由跳轉時會返回到指定url的界面,如果頁面棧上沒有url頁面,則不響應該情況。如果url未設置,則返回上一頁。 |
示例:
// index頁面
export default {
indexPushPage() {
router.push({
url: 'pages/detail/detail',
});
}
}
// detail頁面
export default {
detailPushPage() {
router.push({
url: 'pages/mall/mall',
});
}
}
// mall頁面通過back,將返回detail頁面
export default {
mallBackPage() {
router.back();
}
}
// detail頁面通過back,將返回index頁面
export default {
defaultBack() {
router.back();
}
}
// 通過back,返回到detail頁面
export default {
backToDetail() {
router.back({uri:'pages/detail/detail'});
}
}
router.clear
clear(): void
清空頁面棧中的所有歷史頁面,僅保留當前頁面作為棧頂頁面。
系統能力: SystemCapability.ArkUI.ArkUI.Full
示例:
export default {
clearPage() {
router.clear();
}
}js
router.getLength
getLength(): string
獲取當前在頁面棧內的頁面數量。
系統能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
string | 頁面數量,頁面棧支持最大數值是32。 |
示例:
export default {
getLength() {
var size = router.getLength();
console.log('pages stack size = ' + size);
}
}
router.getState
getState(): RouterState
獲取當前頁面的狀態信息。
系統能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
[RouterState] | 頁面狀態信息。 |
RouterState
頁面狀態信息。
系統能力: 以下各項對應的系統能力均為SystemCapability.ArkUI.ArkUI.Full。
名稱 | 類型 | 說明 |
---|---|---|
index | number | 表示當前頁面在頁面棧中的索引。 > ![icon-note.gif]說明:> 從棧底到棧頂,index從1開始遞增。 |
name | string | 表示當前頁面的名稱,即對應文件名。 |
path | string | 表示當前頁面的路徑。 |
示例:
export default {
getState() {
var page = router.getState();
console.log('current index = ' + page.index);
console.log('current name = ' + page.name);
console.log('current path = ' + page.path);
}
}
router.enableAlertBeforeBackPage
enableAlertBeforeBackPage(options: EnableAlertOptions): void
開啟頁面返回詢問對話框。
系統能力: SystemCapability.ArkUI.ArkUI.Full
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | [EnableAlertOptions] | 是 | 文本彈窗信息描述。 |
示例:
export default {
enableAlertBeforeBackPage() {
router.enableAlertBeforeBackPage({
message: 'Message Info',
success: function() {
console.log('success');
},
fail: function() {
console.log('fail');
},
});
}
}
EnableAlertOptions
頁面返回詢問對話框選項。
系統能力: 以下各項對應的系統能力均為SystemCapability.ArkUI.ArkUI.Full。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
message | string | 是 | 詢問對話框內容。 |
router.disableAlertBeforeBackPage
disableAlertBeforeBackPage(): void
禁用頁面返回詢問對話框。
系統能力: SystemCapability.ArkUI.ArkUI.Full
示例:
export default {
disableAlertBeforeBackPage() {
router.disableAlertBeforeBackPage();
}
}
router.getParams
getParams(): Object
獲取發起跳轉的頁面往當前頁傳入的參數。
系統能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
Object | 發起跳轉的頁面往當前頁傳入的參數。 |
示例:
類Web范示例
// 在當前頁面中 export default { pushPage() { router.push({ url: 'pages/detail/detail', params: { data1: 'message', }, }); } }
// 在detail頁面中 export default { onInit() { console.info('showData1:' + router.getParams().data1); } }
聲明式示例
//通過router.push跳轉至目標頁攜帶params參數 import router from '@ohos.router' @Entry @Component struct Index { async routePage() { let options = { url: 'pages/second', params: { text: '這是第一頁的值', data: { array: [12, 45, 78] }, } } try { await router.push(options) } catch (err) { console.info(` fail callback, code: ${err.code}, msg: ${err.msg}`) } } build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Text('這是第一頁') .fontSize(50) .fontWeight(FontWeight.Bold) Button() { Text('next page') .fontSize(25) .fontWeight(FontWeight.Bold) }.type(ButtonType.Capsule) .margin({ top: 20 }) .backgroundColor('#ccc') .onClick(() = > { this.routePage() }) } .width('100%') .height('100%') } }
//在second頁面中接收傳遞過來的參數
import router from '@ohos.router'
@Entry
@Component
struct Second {
private content: string = "這是第二頁"
@State text: string = router.getParams()['text']
@State data: any = router.getParams()['data']
@State secondData : string = ''
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Text(`${this.content}`)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Text(this.text)
.fontSize(30)
.onClick(()= >{
this.secondData = (this.data.array[1]).toString()
})
.margin({top:20})
Text('第一頁傳來的數值' + ' ' + this.secondData)
.fontSize(20)
.margin({top:20})
.backgroundColor('red')
}
.width('100%')
.height('100%')
}
}
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
RouterOptions
路由跳轉選項。
系統能力: 以下各項對應的系統能力均為SystemCapability.ArkUI.ArkUI.Lite。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 表示目標頁面的uri,可以用以下兩種格式: - 頁面絕對路徑,由配置文件中pages列表提供,例如: - pages/index/index - pages/detail/detail - 特殊值,如果uri的值是"/",則跳轉到首頁。 |
params | Object | 否 | 跳轉時要同時傳遞到目標頁面的數據,跳轉到目標頁面后,參數可以在頁面中直接使用,如this.data1(data1為跳轉時params參數中的key值)。如果目標頁面中已有該字段,則其值會被傳入的字段值覆蓋。 |
說明: 頁面路由棧支持的最大Page數量為32。
審核編輯 黃宇
-
接口
+關注
關注
33文章
8610瀏覽量
151213 -
鴻蒙
+關注
關注
57文章
2355瀏覽量
42868
發布評論請先 登錄
相關推薦
評論