微信小程序之頁面路由

小程序的路由可以理解為:根據(jù)路由規(guī)則(路徑)從一個頁面跳轉(zhuǎn)到另一個頁面的規(guī)則嫂便。

一近迁、微信小程序中頁面跳轉(zhuǎn)的方法:

(1)wx.navigateTo(OBJECT)
保留當(dāng)前頁面骏令,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面旅急,使用wx.navigateBack可以返回到原頁面杠步。
示例代碼:

wx.navigateTo({
    url:'test?id=1'//實(shí)際路徑要寫全
})
//test.js
Page({
  onload:function(option){
    console.log(option.query)
  }
})

(2)wx.redirectTo(OBJECT)
關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用的某個頁面酷宵。
示例代碼:

wx.redirectTo({
  url:'test?id=1'
})

(3)wx.switchTab(OBJECT)
跳轉(zhuǎn)到tabBar頁面,并關(guān)閉其他所有非tabBar頁面
示例代碼:

{
  'tabBar': {
      'list': [{
        'pagePath':'index',
        'test':'首頁' 
      },{
        'pagePath':'other',
        'test':'其他'
      }]
  }
}
wx.switchTab({
  url:'/index'
})

(4)wx.navigateBack(OBJECT)
關(guān)閉當(dāng)前頁面躬窜,返回上一頁面或多級頁面浇垦。可通過getCurrentPages()獲取當(dāng)前的頁面棧荣挨,決定需要返回幾層男韧。
示例代碼:

//注意:調(diào)用navigateTo跳轉(zhuǎn)時,調(diào)用該方法的頁面會被加入堆棧默垄,而redirectTo方法則不會此虑。
//此處是A頁面
wx.navigateTo({
  url:'B?id=1'
})
//此處是B頁面
wx.navigateTo({
    url:'C?id=1'
})
//在C頁面內(nèi)navigateBack,將返回A頁面
wx.navigateBack({
    delta:2
}) 

(5)使用<navigator/>標(biāo)簽實(shí)現(xiàn)頁面跳轉(zhuǎn)
可以用open-type屬性指定頁面跳轉(zhuǎn)方式,可選值‘navigate’口锭、'redirect'朦前、'switchTab',對應(yīng)于wx.navigateTo、wx.redirectTo、wx.switchTab功能
示例代碼:

<navigator url="navigate?title=navigate" hover-class="navigator-hover">跳轉(zhuǎn)到新頁面</navigator>
<navigator url="navigate?title=redirect" open-type="redirect" hover-class="other-navigator-hover">在當(dāng)前頁打開</navigator>
<navigator url="index" open-type="switchTab" hover-class="navigator-hover">切換</navigator>

二韭寸、如何正確使用頁面跳轉(zhuǎn)

官方規(guī)定小程序最多只能有五個頁面同時存在春哨,意思是在不關(guān)閉頁面的情況下,最多新開五個頁面棒仍,頁面深度為5悲靴。

  1. 對于可逆操作,使用wx.navigateTo,比如從首頁跳轉(zhuǎn)到二級頁面莫其,從二級頁面返回是不需要重新渲染頁面
  2. 對于不可逆操作癞尚,使用wx.redirectTo,比如用戶登錄成功后,關(guān)閉登錄頁面乱陡,不能返回到登錄界面浇揩。
  3. 對于一些介紹性等不常用頁面,使用wx.redirectTo或wx.navigateBack
  4. 對于類似九宮格憨颠、列表項(xiàng)胳徽,使用<navigator />跳轉(zhuǎn)
  5. 不要在首頁使用wx.redirectTo,這樣會導(dǎo)致應(yīng)用無法返回首頁
  6. 簡化需求爽彤、簡化流程养盗;核心功能在兩三個頁面完成便是張小龍追求【小而美】的體現(xiàn)

三、頁面棧

頁面棧以棧(先進(jìn)后出)的形式維護(hù)頁面與頁面之間的關(guān)系适篙;
小程序提供了getCurrentPages()函數(shù)獲取頁面棧往核,第一個元素為首頁,最后一個元素為當(dāng)前頁面嚷节。

1聂儒、使用wx.navigateTo每新開一個頁面,頁面棧大小加1,直到頁面棧大小為5為止硫痰;

2衩婚、使用wx.navigateTo重復(fù)打開頁面

上圖中,假如使用wx.navigateTo從四級頁面跳轉(zhuǎn)到二級頁面效斑,此時會在頁面棧頂添加一個與二級頁面初始狀態(tài)一樣的界面非春,但兩個頁面狀態(tài)是獨(dú)立的。頁面棧大小會加1缓屠,如果頁面棧大小為5税娜,則wx.navigateTo無效
使用wx.redirectTo重定向

3、使用wx.redirectTo重定向

上圖中藏研,假如使用wx.redirectTo從四級頁面重定向到二級頁面敬矩,此時會將關(guān)閉四級頁面,并使用二級頁面替換四級頁面蠢挡,但兩個頁面狀態(tài)是獨(dú)立的弧岳。此時的頁面棧大小不變凳忙,請注意和使用wx.navigateTo的區(qū)別。
使用wx.navigateBack返回

4禽炬、使用wx.navigateBack返回

上圖中涧卵,假如當(dāng)前頁面為五級頁面,使用wx.navigateBack:
當(dāng)delta為1腹尖,關(guān)閉五級頁面柳恐,當(dāng)前頁面為四級頁面,頁面棧大小減1热幔;
當(dāng)delta為2乐设,關(guān)閉依次五級頁面和四級頁面,當(dāng)前頁面為三級頁面绎巨,頁面棧大小減2近尚;
以此類推,直到棧底為止场勤,也就是首頁戈锻。

總結(jié)

  • wx.navigateTo會增加頁面棧大小,直到頁面棧大小為5
  • wx.redirectTo不會增加頁面棧大小
  • wx.navigateBack會減少頁面棧大小和媳,直到頁面棧大小為1

內(nèi)容參考自:小程序基礎(chǔ)之頁面路由

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末格遭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子留瞳,更是在濱河造成了極大的恐慌如庭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撼港,死亡現(xiàn)場離奇詭異,居然都是意外死亡骤竹,警方通過查閱死者的電腦和手機(jī)帝牡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒙揣,“玉大人靶溜,你說我怎么就攤上這事±琳穑” “怎么了罩息?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長个扰。 經(jīng)常有香客問我瓷炮,道長,這世上最難降的妖魔是什么递宅? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任娘香,我火速辦了婚禮苍狰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烘绽。我一直安慰自己淋昭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布安接。 她就那樣靜靜地躺著翔忽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盏檐。 梳的紋絲不亂的頭發(fā)上歇式,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音糯笙,去河邊找鬼贬丛。 笑死,一個胖子當(dāng)著我的面吹牛给涕,可吹牛的內(nèi)容都是我干的豺憔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼够庙,長吁一口氣:“原來是場噩夢啊……” “哼恭应!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耘眨,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤昼榛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后剔难,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胆屿,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年偶宫,在試婚紗的時候發(fā)現(xiàn)自己被綠了非迹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡纯趋,死狀恐怖憎兽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吵冒,我是刑警寧澤纯命,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站痹栖,受9級特大地震影響亿汞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揪阿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一留夜、第九天 我趴在偏房一處隱蔽的房頂上張望匙铡。 院中可真熱鬧,春花似錦碍粥、人聲如沸鳖眼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钦讳。三九已至,卻和暖如春枕面,著一層夾襖步出監(jiān)牢的瞬間愿卒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工潮秘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琼开,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓枕荞,卻偏偏與公主長得像柜候,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躏精,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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