国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

小程序封裝路由文件和路由方法(5種全解析)

2024-05-06 15:38:57
字體:
來源:轉載
供稿:網友

小程序5種路由方法使用場景,封裝路由文件和路由方法,提升小程序體驗和開發效率

明確要解決的問題

每次使用路由時,總是粘貼復制路徑,這樣在路徑有修改時,需要修改所有用到該路徑的地方,維護成本高 路由跳轉時拼接參數讓人頭大,業務復雜時要拼接十幾個參數 路由返回,只會返回一層,不能直接返回到目標頁面,因為不知道目標頁面是否在路由棧中,也不知道在第幾層

這些問題都可以通過封裝路由文件和路由方法解決,提供開發效率,減少BUG,省下來的時間可以多陪陪女朋友

封裝路由文件,對路由進行統一管理

在根目錄創建router.js

// 這是路由管理頁面,在此統一配置路由export default { 'index':'/index/index', // 首頁 'list':'/list/list', // list頁面 'top':'/top/top', // top頁面}

解決了第一個問題

封裝路由方法

路由方法有五個,常用的有三個switchTab、navigateTo、navigateBack
簡單介紹一下這五個方法及使用場景

switchTab,跳轉tabBar頁面專用,其他頁面出棧,新頁面入棧 navigateTo最常用的路由跳轉,會加入到頁面棧,允許返回,也就是新頁面不斷入棧 navigateBack返回,只能返回到頁面棧中存在的頁面,頁面不斷出棧,直到到達目標頁 redirectTo關閉當前頁面,跳轉某個頁面,當前頁面不會加入到頁面棧,也就是說當前頁面不能通過返回到達,比如付款頁面,付款完成后,最好不要再讓用戶返回到付款頁,再比如一些無法修改的操作,比如刪除商品,商品刪除后再通過navigateBack返回再刪除一次商品,體驗肯定不好,表現為當前頁面出棧,新頁面入棧 reLaunch關閉所有頁面,打開某個頁面,可以打開任意頁面包括tabBar,適合強制完成某個操作的頁面,比如登錄頁,當已登錄的用戶點擊退出后,進入登錄頁,那么就不能通過返回再回去了,就必須留下來登錄或注冊,適合用這個,表現為所有頁面出棧,新頁面入棧

開始封裝,在根目錄創建utils.js

// 封裝路由方法export default { /**   * function  * @param {string} url 目標頁面的路由  * @param {Object} param 傳遞給目標頁面的參數  * @description 處理目標頁面的參數,轉成json字符串傳遞給param字段,在目標頁面通過JSON.parse(options.param)接收  */  navigateTo(url,param={}){  if(param){   url+=`?param=${JSON.stringify(param)}`  }  wx.navigateTo({   url:url,   fail(err) {    console.log('navigateTo跳轉出錯',err)    },  }) },  /**   * function  * @param {string} url 目標頁面的路由  * @param {Object} param 傳遞給目標頁面的參數,只有頁面棧無目標頁面調用navigateTo時,參數才會生效,單單返回不能設置參數  * @description 先取出頁面棧,頁面棧最多十層,判斷目標頁面是否在頁面棧中,如果在,則通過目標頁的位置,返回到目標頁面,否則調用navigateTo方法跳轉到目標頁  */   navigateBack(url,param={}){  const pagesList = getCurrentPages()  let index = pagesList.findIndex(e=>{   return url.indexOf(e.route)>=0  })  if(index == -1){ // 沒有在頁面棧中,可以調用navigateTo方法   this.navigateTo(url,param)  }else{   wx.navigateBack({    delta: pagesList.length-1-index,    fail(err){     console.log('navigateBack返回出錯',err)    }   })  } }, switchTab(url){ // 封裝switchTab,switchTab不能有參數  wx.switchTab({   url:url  }) }, redirectTo(url,param={}){ // 封裝redirectTo,和navigateTo沒啥區別  if(param){   url+=`?param=${JSON.stringify(param)}`  }  wx.redirectTo({   url:url,   fail(err) {    console.log('redirectTo跳轉出錯',err)    },  }) }, reLaunch(url,param={}){ // 封裝reLaunch,和navigateTo沒啥區別  if(param){   url+=`?param=${JSON.stringify(param)}`要根據具體業務來,該返回就返回,該跳轉就用跳轉,不能一直跳轉!  }  wx.reLaunch({   url:url,   fail(err) {    console.log('reLaunch跳轉出錯',err)    },  }) }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 松原市| 英山县| 南丰县| 泸州市| 玉山县| 体育| 布尔津县| 永寿县| 西乌珠穆沁旗| 绥芬河市| 温州市| 乌兰察布市| 绥阳县| 鄂温| 广汉市| 桦南县| 桓台县| 当雄县| 涿州市| 山东省| 霍山县| 米林县| 开原市| 嘉鱼县| 金沙县| 永州市| 江川县| 渭源县| 张家川| 建阳市| 铁力市| 蒙城县| 凯里市| 浠水县| 沧州市| 颍上县| 牡丹江市| 壶关县| 鞍山市| 云梦县| 慈溪市|