從零開始仿抖音做一個APP(Router替換為Navigation)

前一篇頁面跳轉(zhuǎn)邏輯為了省事使用的Router相關(guān)api實現(xiàn)跳轉(zhuǎn),由于Rouer接口在跨模塊業(yè)務(wù)或者一多效果相關(guān)場景存在明顯的局限性,而且頁面跳轉(zhuǎn)有數(shù)量限制等原因,官方明確不再推薦使用Router,所以我也替換為Navigation,本文簡單介紹一下該接口的特點和使用方法陈肛。

Navigation和Navigator的區(qū)別

  • Navigation組件:是路由導(dǎo)航的根視圖容器,一般作為Page頁面的根容器使用兄裂。相關(guān)的api比較多句旱,詳見官方文檔

典型用法:

build() {
    Navigation() {
  // ...
}
.mode(NavigationMode.Auto)
  }
  • Navigator組件:路由容器組件晰奖,提供路由跳轉(zhuǎn)能力前翎,詳見官方文檔

典型用法:

build() {
    Column() {
      Navigator({ target: 'pages/container/navigator/Navigator', type: NavigationType.Back }) {
        Text('Return to Navigator Page').width('100%').textAlign(TextAlign.Center)
      }
    }.width('100%').height(200).padding({ left: 35, right: 35, top: 35 })
  }

很多初學(xué)者對Navigator和Navigation傻傻分不清畅涂,但其實它們的用法還是有很大區(qū)別的港华。

Navigation初認識

Navigation作為路由導(dǎo)航的根視圖,主要有兩種頁面布局模式:單視圖午衰、分欄視圖立宜,默認為自適應(yīng)模式。也就是根據(jù)頁面寬度動態(tài)判斷單視圖還是分欄視圖臊岸,這對一多開發(fā)很友好橙数,也是Navigation的一大特點。具體來講帅戒,就是當(dāng)頁面寬度大于等于一定閾值( API version 9及以前:520vp灯帮,API version 10及以后:600vp )時,Navigation組件采用分欄模式逻住,反之采用單欄模式钟哥。

Navigation作為根視圖,通過傳入一個頁面棧對象瞎访,實現(xiàn)路由跳轉(zhuǎn)腻贰。 Navigation路由相關(guān)的操作都是基于頁面棧NavPathStack提供的方法進行,每個Navigation都需要創(chuàng)建并傳入一個NavPathStack對象扒秸,用于管理頁面播演。主要涉及頁面跳轉(zhuǎn)、頁面返回伴奥、頁面替換写烤、頁面刪除、參數(shù)獲取拾徙、路由攔截等功能洲炊。

例如Index作為項目主入口,點擊Button,調(diào)用NavPathStack的api實現(xiàn)跳轉(zhuǎn)选浑。

@Entry
@Component
struct Index {
  // 創(chuàng)建一個頁面棧對象并傳入Navigation
  pageStack: NavPathStack = new NavPathStack()

  build() {
    Navigation(this.pageStack) {
   Button('Push DialogPage')
         .margin(20)
         .width('80%')
         .onClick(() => {
           this.pageStack.pushPathByName('DialogPage', '');
         })
    }
    .title('Main')
  }
}

跳轉(zhuǎn)到新的頁面PageSecond

 @Component
 export struct DialogPage {
   @Consume('NavPathStack') pageStack: NavPathStack;

   build() {
     NavDestination() {
       Stack({ alignContent: Alignment.Center }) {
         Column() {
           Text("Dialog NavDestination")
             .fontSize(20)
             .margin({ bottom: 100 })
         }
       }.height("100%").width('100%')
     }
     .backgroundColor('rgba(0,0,0,0.5)')
     .hideTitleBar(true)
     .mode(NavDestinationMode.DIALOG)
   }
 }

Router切換Navigation

  1. 明確跳轉(zhuǎn)頁面和目標(biāo)跳轉(zhuǎn)頁面

主頁面:


image.png

目標(biāo)頁面:


image.png
  1. 在resources/base/profile/route_map.json添加路由。


    image.png
  1. 在module.json5文件中添加"routerMap": "$profile:route_map"


    image.png

至此玄叠,關(guān)于Navigation的簡單介紹及使用方法就講完了古徒,更多api或特性的應(yīng)用請看官方文檔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末读恃,一起剝皮案震驚了整個濱河市隧膘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寺惫,老刑警劉巖疹吃,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異西雀,居然都是意外死亡萨驶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門艇肴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腔呜,“玉大人,你說我怎么就攤上這事再悼『顺耄” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵冲九,是天一觀的道長谤草。 經(jīng)常有香客問我,道長莺奸,這世上最難降的妖魔是什么丑孩? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮灭贷,結(jié)果婚禮上嚎杨,老公的妹妹穿的比我還像新娘。我一直安慰自己氧腰,他們只是感情好枫浙,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著古拴,像睡著了一般箩帚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黄痪,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天紧帕,我揣著相機與錄音,去河邊找鬼。 笑死是嗜,一個胖子當(dāng)著我的面吹牛愈案,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅搪,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼站绪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丽柿?” 一聲冷哼從身側(cè)響起恢准,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甫题,沒想到半個月后馁筐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡坠非,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年敏沉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炎码。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赦抖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辅肾,到底是詐尸還是另有隱情队萤,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布矫钓,位于F島的核電站要尔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏新娜。R本人自食惡果不足惜赵辕,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望概龄。 院中可真熱鬧还惠,春花似錦、人聲如沸私杜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衰粹。三九已至锣光,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铝耻,已是汗流浹背誊爹。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人频丘。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓办成,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搂漠。 傳聞我的和親對象是個殘疾皇子迂卢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容