自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從微信小程序到鴻蒙JS開發(fā)-頁面路由

開發(fā)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com

[[383200]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

在項目中,頁面之間的路由跳轉(zhuǎn)是十分普遍的。鴻蒙JS開發(fā)提供了四種頁面跳轉(zhuǎn)的方式(輕量級智能穿戴僅支持replace()),之前的帖子中也有涉及到一些,本文將詳解這四個API并與微信小程序中類似的頁面跳轉(zhuǎn)方式做比較。

鴻蒙頁面路由需導(dǎo)入router模塊。import router from '@system.router';

1、router.push()&wx.navigateTo()

這兩個方法都是壓棧式跳轉(zhuǎn),即將跳轉(zhuǎn)到的目標(biāo)頁面“壓”在源頁面上,源頁面不銷毀,按返回鍵即可返回源頁面。

router.push()有兩個參數(shù),uri指定頁面路徑,params指定跳轉(zhuǎn)攜帶參數(shù)。在目標(biāo)頁面data中只要有與params中即可接收數(shù)據(jù),無需寫額外一行代碼。

第一頁 "push 下一頁"按鈕點擊事件:

  1. pushNext() { 
  2.      router.push({ 
  3.          uri: "pages/two/two"
  4.          params: { 
  5.              method: "push" 
  6.          } 
  7.      }) 
  8.  }, 

  1. data: { 
  2.      method: ""
  3.      count: 0 
  4.  }, 
  5.  onShow() { 
  6.      this.count = router.getLength(); 
  7.  }, 

router.getLength()可獲取頁面棧中頁面數(shù)量,鴻蒙頁面棧支持最大數(shù)值是32。

此時點擊設(shè)備的返回按鈕,即可返回第一頁。

第二頁 "push 下一頁"按鈕點擊事件:

  1. pushNext() { 
  2.     router.push({ 
  3.         uri: "pages/three/three"
  4.         params: { 
  5.             data: { 
  6.                 name"HarmonyOS"
  7.                 type: "phone"
  8.                 method: "push" 
  9.             } 
  10.         } 
  11.     }) 
  12. }, 

帶復(fù)雜參數(shù)跳轉(zhuǎn),也是完全支持的。

微信小程序的wx.navigateTo()方法效果一致,微信小程序中頁面跳轉(zhuǎn)的參數(shù)在url中攜帶,和統(tǒng)一資源定位符的規(guī)則一致。且支持success,fail,complete回調(diào)函數(shù),也支持雙向事件的觸發(fā)。

第一頁 "navigateTo 下一頁"點擊事件:

  1. naviNext() { 
  2.    wx.navigateTo({ 
  3.      url: '../two/two?method=navigateTo'
  4.      success: res => { 
  5.        console.log(res) 
  6.      } 
  7.    }) 
  8.  }, 

第二頁需在onLoad()中手動接收參數(shù),參數(shù)被傳遞到options對象中。

  1. onLoad: function (options) { 
  2.   this.setData({ 
  3.     method: options.method 
  4.   }) 
  5. }, 

如需攜帶復(fù)雜參數(shù),只能通過events參數(shù)傳遞,且只有navigateTo()支持該參數(shù)。微信小程序支持頁面棧最大頁面數(shù)為10,該方法不支持跳轉(zhuǎn)到app.json中配置的tabBar頁面。

2、router.replace()&wx.redirectTo()

銷毀當(dāng)前頁面并跳轉(zhuǎn)頁面,源頁面在頁面棧中被清除。

router.replace()參數(shù)和router.push()一致,這里主要看頁面棧的頁面數(shù)。

第一頁"replace 下一頁"點擊事件:

  1. replaceNext() { 
  2.     router.replace({ 
  3.         uri: "pages/two/two"
  4.         params: { 
  5.             method: "replace" 
  6.         } 
  7.     }) 

第二頁"replace 下一頁"點擊事件:

  1. replaceNext() { 
  2.     router.replace({ 
  3.         uri: "pages/three/three"
  4.         params: { 
  5.             data: { 
  6.                 name"HarmonyOS"
  7.                 type: "phone"
  8.                 method: "replace" 
  9.             } 
  10.         } 
  11.     }) 

連續(xù)點擊replace到第三頁,頁面棧中頁面數(shù)始終為1。

此時若點擊設(shè)備返回鍵,則是退出APP的效果。

wx.redirectTo()效果類似,左上角返回按鈕變?yōu)?quot;home"按鈕。微信小程序的首頁是不會被銷毀的,從redirectTo轉(zhuǎn)到的頁面點擊"home"按鈕也可以返回首頁。

  1. rediNext() { 
  2.    wx.redirectTo({ 
  3.      url: '../two/two?method=redirectTo'
  4.      success: res => { 
  5.        console.log(res) 
  6.      } 
  7.    }) 
  8.  }, 

3、router.back()&wx.navigateBack()

返回上一頁的方法,鴻蒙支持傳頁面path指定返回的頁面路徑。

第三頁"上一頁、回首頁"點擊事件:

  1. back1() { 
  2.      router.back(); 
  3.  }, 
  4.  back2() { 
  5.      router.back({ 
  6.          path: "pages/index/index" 
  7.      }) 
  8.  }, 

back()方法會將頁面棧中返回目標(biāo)頁面之上的頁面全部清除。如頁面棧中只有1個頁面,back()方法會將APP退出。

微信小程序wx.navigateBack()方法可通過delta參數(shù)指定返回幾層頁面,如果 delta 大于現(xiàn)有頁面數(shù),則返回到首頁。

  1. naviBack(){ 
  2.   wx.navigateBack({ 
  3.     success: res => { 
  4.       console.log(res); 
  5.     } 
  6.   }) 
  7. }, 
  8.  
  9. naviIndex(){ 
  10.   wx.navigateBack({ 
  11.     delta: 10, 
  12.     success: res => { 
  13.       console.log(res); 
  14.     } 
  15.   }) 
  16. }, 

如果頁面棧中只有1個頁面,此方法將無法觸發(fā)并進入fail回調(diào)。但仍可點擊小程序左上角"home"按鈕返回首頁。

4、router.clear()&wx.reLaunch()

router.clear()是清空頁面棧中其余頁面的方法,僅保留當(dāng)前頁面。

wx.reLaunch()則可以實現(xiàn)清除所有頁面,并轉(zhuǎn)到特定頁面的方法。小程序首頁仍可以通過點擊"home"按鈕返回。

  1. relaNext() { 
  2.   wx.reLaunch({ 
  3.     url: '../three/three?method=reLaunch'
  4.     success: res => { 
  5.       console.log(res) 
  6.     } 
  7.   }) 
  8. }, 

5、項目實踐

歡迎頁面跳轉(zhuǎn)到首頁,使用replace()。

分類->二級分類->商品列表->商品,使用push()。

商品詳情->首頁,使用replace()并clear()掉多余頁面。

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-03-02 09:29:29

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-20 09:52:02

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-23 12:23:57

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-21 11:09:18

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-22 14:56:55

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-25 10:01:19

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-04 13:49:41

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-23 09:52:42

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-05 09:46:16

鴻蒙HarmonyOSjs開發(fā)

2021-02-25 15:13:08

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-07 09:17:24

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-24 09:36:03

鴻蒙CSS應(yīng)用開發(fā)

2016-11-04 10:47:27

微信小程序

2017-05-08 15:03:07

微信小程序開發(fā)實戰(zhàn)

2016-09-28 18:10:59

微信程序MINA

2016-09-27 16:38:24

JavaScript微信Web

2016-11-04 10:49:48

微信小程序

2016-09-27 20:36:23

微信HttpWeb

2016-11-04 10:30:17

微信小程序

2018-09-11 10:32:07

云開發(fā)小程序開發(fā)者
點贊
收藏

51CTO技術(shù)棧公眾號