0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開(kāi)發(fā)接口UI界面:【@ohos.router (頁(yè)面路由)】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-28 16:26 ? 次閱讀

頁(yè)面路由

icon-note.gif說(shuō)明
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

  • 本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
  • 頁(yè)面路由需要在頁(yè)面渲染完成之后才能調(diào)用,在onInit和onReady生命周期中頁(yè)面還處于渲染階段,禁止調(diào)用頁(yè)面路由方法。

導(dǎo)入模塊

import router from '@ohos.router'

權(quán)限列表

無(wú)

router.push

push(options: RouterOptions): void

跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù)

參數(shù)名類(lèi)型必填說(shuō)明
options[RouterOptions]跳轉(zhuǎn)頁(yè)面描述信息

示例:

// 在當(dāng)前頁(yè)面中
export default {
  pushPage() {
    router.push({
      url: 'pages/routerpage2/routerpage2',
      params: {
	data1: 'message',
        data2: {
          data3: [123, 456, 789]
	},
      },
    });
  }
}
// 在routerpage2頁(yè)面中
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

用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面,并銷(xiāo)毀被替換的頁(yè)面。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名類(lèi)型必填說(shuō)明
options[RouterOptions]替換頁(yè)面描述信息。

示例:

// 在當(dāng)前頁(yè)面中
export default {
  replacePage() {
    router.replace({
      url: 'pages/detail/detail',
      params: {
        data1: 'message',
      },
    });
  }
}
// 在detail頁(yè)面中
export default {
  data: {
    data1: 'default'
  },
  onInit() {
    console.info('showData1:' + this.data1)
  }
}

router.back

back(options?: RouterOptions ): void

返回上一頁(yè)面或指定的頁(yè)面。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名類(lèi)型必填說(shuō)明
options[RouterOptions]返回頁(yè)面描述信息,其中參數(shù)url指路由跳轉(zhuǎn)時(shí)會(huì)返回到指定url的界面,如果頁(yè)面棧上沒(méi)有url頁(yè)面,則不響應(yīng)該情況。如果url未設(shè)置,則返回上一頁(yè)。

示例:

// index頁(yè)面
export default {    
  indexPushPage() {        
    router.push({            
      url: 'pages/detail/detail',        
    });        
  }
}
// detail頁(yè)面
export default {    
  detailPushPage() {        
    router.push({            
      url: 'pages/mall/mall',        
    });    
  }
}
// mall頁(yè)面通過(guò)back,將返回detail頁(yè)面
export default {    
  mallBackPage() {        
    router.back();    
  }
}
// detail頁(yè)面通過(guò)back,將返回index頁(yè)面
export default {    
  defaultBack() {        
    router.back();    
  }
}
// 通過(guò)back,返回到detail頁(yè)面
export default {    
  backToDetail() {        
    router.back({uri:'pages/detail/detail'});    
  }
}

router.clear

clear(): void

清空頁(yè)面棧中的所有歷史頁(yè)面,僅保留當(dāng)前頁(yè)面作為棧頂頁(yè)面。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

示例:

export default {    
  clearPage() {        
    router.clear();    
  }
}js

router.getLength

getLength(): string

獲取當(dāng)前在頁(yè)面棧內(nèi)的頁(yè)面數(shù)量。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

類(lèi)型說(shuō)明
string頁(yè)面數(shù)量,頁(yè)面棧支持最大數(shù)值是32。

示例:

export default {     
  getLength() {        
    var size = router.getLength();        
    console.log('pages stack size = ' + size);    
  }
}

router.getState

getState(): RouterState

獲取當(dāng)前頁(yè)面的狀態(tài)信息。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

類(lèi)型說(shuō)明
[RouterState]頁(yè)面狀態(tài)信息。

RouterState

頁(yè)面狀態(tài)信息。

系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.ArkUI.ArkUI.Full。

名稱(chēng)類(lèi)型說(shuō)明
indexnumber表示當(dāng)前頁(yè)面在頁(yè)面棧中的索引。 > ![icon-note.gif]說(shuō)明:> 從棧底到棧頂,index從1開(kāi)始遞增。
namestring表示當(dāng)前頁(yè)面的名稱(chēng),即對(duì)應(yīng)文件名。
pathstring表示當(dāng)前頁(yè)面的路徑。

示例:

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

開(kāi)啟頁(yè)面返回詢問(wèn)對(duì)話框。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名類(lèi)型必填說(shuō)明
options[EnableAlertOptions]文本彈窗信息描述。

示例:

export default {    
  enableAlertBeforeBackPage() {        
    router.enableAlertBeforeBackPage({            
      message: 'Message Info',            
      success: function() {                
        console.log('success');            
      },            
      fail: function() {                
        console.log('fail');            
      },        
    });    
  }
}

EnableAlertOptions

頁(yè)面返回詢問(wèn)對(duì)話框選項(xiàng)。

系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.ArkUI.ArkUI.Full。

名稱(chēng)類(lèi)型必填說(shuō)明
messagestring詢問(wèn)對(duì)話框內(nèi)容。

router.disableAlertBeforeBackPage

disableAlertBeforeBackPage(): void

禁用頁(yè)面返回詢問(wèn)對(duì)話框。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

示例:

export default {    
  disableAlertBeforeBackPage() {        
    router.disableAlertBeforeBackPage();    
  }
}

router.getParams

getParams(): Object

獲取發(fā)起跳轉(zhuǎn)的頁(yè)面往當(dāng)前頁(yè)傳入的參數(shù)。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

類(lèi)型說(shuō)明
Object發(fā)起跳轉(zhuǎn)的頁(yè)面往當(dāng)前頁(yè)傳入的參數(shù)。

示例:

  • 類(lèi)Web范示例

    // 在當(dāng)前頁(yè)面中
    export default {
      pushPage() {
        router.push({
          url: 'pages/detail/detail',
          params: {
            data1: 'message',
          },
        });
      }
    }
    
    // 在detail頁(yè)面中
    export default {
      onInit() {
        console.info('showData1:' + router.getParams().data1);
      }
    }
    
  • 聲明式示例

    //通過(guò)router.push跳轉(zhuǎn)至目標(biāo)頁(yè)攜帶params參數(shù)
    import router from '@ohos.router'
    
    @Entry
    @Component
    struct Index {
      async  routePage() {
        let options = {
          url: 'pages/second',
          params: {
            text: '這是第一頁(yè)的值',
            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('這是第一頁(yè)')
              .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頁(yè)面中接收傳遞過(guò)來(lái)的參數(shù)
    import router from '@ohos.router'

    @Entry
    @Component
    struct Second {
      private content: string = "這是第二頁(yè)"
      @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('第一頁(yè)傳來(lái)的數(shù)值' + '  ' + this.secondData)
            .fontSize(20)
            .margin({top:20})
            .backgroundColor('red')      
        }
        .width('100%')
        .height('100%')
      }
    }
    
    `HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

搜狗高速瀏覽器截圖20240326151344.png

RouterOptions

路由跳轉(zhuǎn)選項(xiàng)。

系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.ArkUI.ArkUI.Lite。

名稱(chēng)類(lèi)型必填說(shuō)明
urlstring表示目標(biāo)頁(yè)面的uri,可以用以下兩種格式: - 頁(yè)面絕對(duì)路徑,由配置文件中pages列表提供,例如: - pages/index/index - pages/detail/detail - 特殊值,如果uri的值是"/",則跳轉(zhuǎn)到首頁(yè)。
paramsObject跳轉(zhuǎn)時(shí)要同時(shí)傳遞到目標(biāo)頁(yè)面的數(shù)據(jù),跳轉(zhuǎn)到目標(biāo)頁(yè)面后,參數(shù)可以在頁(yè)面中直接使用,如this.data1(data1為跳轉(zhuǎn)時(shí)params參數(shù)中的key值)。如果目標(biāo)頁(yè)面中已有該字段,則其值會(huì)被傳入的字段值覆蓋。

icon-note.gif說(shuō)明: 頁(yè)面路由棧支持的最大Page數(shù)量為32。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8447

    瀏覽量

    150724
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2302

    瀏覽量

    42689
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開(kāi)發(fā)接口UI界面:【@ohos.prompt (彈窗)】

    本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
    的頭像 發(fā)表于 05-28 09:35 ?1056次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b>:【@<b class='flag-5'>ohos</b>.prompt (彈窗)】

    鴻蒙開(kāi)發(fā)-應(yīng)用程序框架UIAbility的使用

    使用不同的url訪問(wèn)不同的頁(yè)面,包括跳轉(zhuǎn)到UIAbility內(nèi)的指定頁(yè)面、用UIAbility內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面、返回上一頁(yè)面或指定的
    發(fā)表于 01-17 16:36

    純血鴻蒙開(kāi)發(fā)教程-運(yùn)行時(shí)動(dòng)態(tài)加載頁(yè)面提升性能

    } from \'./pageTwo\'; ... import router from \'@ohos.router\'; 2.主頁(yè)通過(guò)Navigation組件實(shí)現(xiàn)點(diǎn)擊Button跳轉(zhuǎn)到不同的子頁(yè)面
    發(fā)表于 05-10 20:52

    鴻蒙應(yīng)用開(kāi)發(fā)踩坑記之路由跳轉(zhuǎn)

    幫我催催官方吧。這兩天Mac OS發(fā)布了最新的版本,鴻蒙開(kāi)發(fā)工具也發(fā)布了mac版本,這兩件事稍許沖淡了我在鴻蒙應(yīng)用開(kāi)發(fā)中遇到的不快。今天就來(lái)繼續(xù)做一下
    發(fā)表于 11-18 16:54

    鴻蒙應(yīng)用開(kāi)發(fā)踩坑記之路由跳轉(zhuǎn)

    本來(lái)打算先搞地圖方面的開(kāi)發(fā),但是遇到一些,已經(jīng)在官方論壇發(fā)帖求助了:關(guān)于JS UI開(kāi)發(fā)的一些問(wèn)題大家如果對(duì)鴻蒙應(yīng)用開(kāi)發(fā)有興趣,也去幫我催催官
    發(fā)表于 11-21 18:21

    鴻蒙開(kāi)發(fā)AI應(yīng)用(六)UI

    在“富鴻蒙”的設(shè)備上開(kāi)發(fā)就會(huì)比較方便。資料下載本期相關(guān)文件資料,可在公眾號(hào)“深度覺(jué)醒”,后臺(tái)回復(fù):“ohos06”,獲取下載鏈接。下一篇預(yù)告本期主要介紹了一下JS框架下的界面
    發(fā)表于 01-07 01:16

    HarmonyOS應(yīng)用開(kāi)發(fā)-ArkUI聲明式UI頁(yè)面布局、跳轉(zhuǎn)與返回的實(shí)現(xiàn)

    RouterAPI接口,通過(guò)在頁(yè)面上引入router,可以調(diào)用router的各種接口,從而實(shí)現(xiàn)頁(yè)面
    發(fā)表于 12-09 11:42

    鴻蒙開(kāi)源第三方組件資料合集

    展示1、測(cè)試界面。 如圖1所示,這是一個(gè)為了測(cè)試Timber_ohos功能而簡(jiǎn)單構(gòu)建的UI頁(yè)面。點(diǎn)擊“測(cè)試”按鈕即可輸出相應(yīng)的log。2、鴻蒙
    發(fā)表于 03-23 09:53

    【潤(rùn)和軟件DAYU200開(kāi)發(fā)板體驗(yàn)】從頭創(chuàng)建eTs項(xiàng)目

    in the build phase.*/build() {}}9、實(shí)現(xiàn)頁(yè)面間的跳轉(zhuǎn)頁(yè)面間的導(dǎo)航可以通過(guò)頁(yè)面路由ro
    發(fā)表于 10-16 15:24

    HarmonyOS 管理頁(yè)面跳轉(zhuǎn)及瀏覽記錄導(dǎo)航

    。 // index.ets import web_webview from \'@ohos.web.webview\'; import router from \'@ohos.router\'; @Entry
    發(fā)表于 09-19 18:31

    鴻蒙原生應(yīng)用開(kāi)發(fā)-關(guān)于頁(yè)面接口router返回問(wèn)題與解決思路

    一、模塊導(dǎo)入 import router from \'@ohos.router\' 提供通過(guò)不同的url訪問(wèn)不同的頁(yè)面,包括跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面、用應(yīng)用內(nèi)的某個(gè)
    發(fā)表于 11-15 10:11

    鴻蒙版微信聊天UI效果實(shí)現(xiàn)!

    ? 最近開(kāi)發(fā)中要做一個(gè)類(lèi)似微信聊天的工單系統(tǒng)客服中心界面(安卓版)所以想著也模仿一個(gè)鴻蒙版(基于 Java UI 的,JS UI 版本的后期
    的頭像 發(fā)表于 11-15 09:35 ?3572次閱讀
    <b class='flag-5'>鴻蒙</b>版微信聊天<b class='flag-5'>UI</b>效果實(shí)現(xiàn)!

    鴻蒙頁(yè)面示例

    @Entry標(biāo)簽,被該標(biāo)簽修飾后頁(yè)面才會(huì)有生命周期 import router from '@ohos.router'@Entry@Componentstruct Login { @State title
    的頭像 發(fā)表于 02-01 11:24 ?420次閱讀

    鴻蒙OS開(kāi)發(fā)實(shí)例:【工具類(lèi)封裝-頁(yè)面路由

    import common from '@ohos.app.ability.common'; import router from '@ohos.router'封裝app內(nèi)的
    的頭像 發(fā)表于 03-28 16:16 ?831次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【工具類(lèi)封裝-<b class='flag-5'>頁(yè)面</b><b class='flag-5'>路由</b>】

    鴻蒙開(kāi)發(fā)接口UI界面:【@ohos.animator (動(dòng)畫(huà))】

    本模塊首批接口從API version 6開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
    的頭像 發(fā)表于 05-27 16:46 ?526次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b>:【@<b class='flag-5'>ohos</b>.animator (動(dòng)畫(huà))】