欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

小程序如何封裝路由?這五個方法及使用場景要了解 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

小程序如何封裝路由?這五個方法及使用場景要了解

發(fā)表時間:2021-1-4

發(fā)布人:葵宇科技

瀏覽次數(shù):49

封裝路由方法

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

  • switchTab,跳轉tabBar頁面專用,其他頁面出棧,新頁面入棧

  • navigateTo最常用的路由跳轉,會加入到頁面棧,允許返回,也就是新頁面不斷入棧

  • navigateBack返回,只能返回到頁面棧中存在的頁面,頁面不斷出棧,直到到達目標頁

  • redirectTo關閉當前頁面,跳轉某個頁面,當前頁面不會加入到頁面棧,也就是說當前頁面不能通過返回到達,比如付款頁面,付款完成后,最好不要再讓用戶返回到付款頁,再比如一些無法修改的操作,比如刪除商品,商品刪除后再通過navigateBack返回再刪除一次商品,體驗肯定不好,表現(xiàn)為當前頁面出棧,新頁面入棧

  • reLaunch關閉所有頁面,打開某個頁面,可以打開任意頁面包括tabBar,適合強制完成某個操作的頁面,比如登錄頁,當已登錄的用戶點擊退出后,進入登錄頁,那么就不能通過返回再回去了,就必須留下來登錄或注冊,適合用這個,表現(xiàn)為所有頁面出棧,新頁面入棧

封裝

// 封裝路由方法
export default {

  /** 
   * function
   * @param {string} url 目標頁面的路由
   * @param {Object} param 傳遞給目標頁面的參數(shù)
   * @description  處理目標頁面的參數(shù),轉成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 傳遞給目標頁面的參數(shù),只有頁面棧無目標頁面調用navigateTo時,參數(shù)才會生效,單單返回不能設置參數(shù)
   * @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不能有參數(shù)
    wx.switchTab({
      url:url
    })
  },
  redirectTo(url,param={}){ // 封裝redirectTo,和navigateTo沒啥區(qū)別
    if(param){
      url+=`?param=${JSON.stringify(param)}`
    }
    wx.redirectTo({
      url:url,
      fail(err) {
        console.log('redirectTo跳轉出錯',err)  
      },
    })
  },
  reLaunch(url,param={}){ // 封裝reLaunch,和navigateTo沒啥區(qū)別
    if(param){
      url+=`?param=${JSON.stringify(param)}`要根據(jù)具體業(yè)務來,該返回就返回,該跳轉就用跳轉,不能一直跳轉!
    }
    wx.reLaunch({
      url:url,
      fail(err) {
        console.log('reLaunch跳轉出錯',err)  
      },
    })
  }
}

相關案例查看更多