微信小程序--页面跳转(普通跳转、带参数跳转、上个页面路径)

2019-10-28  本文已影响0人  七號7777

参考文档:https://www.cnblogs.com/liuxin-673855200/p/9506976.html

一、wx.navigateTo(OBJECT)

保留当前页面,跳转到应用内的某个页面
类似于html中的 window.location.href=" "

// 写法
wx.navigateTo({
  url: 'test?id=1'
})

小程序中左上角有一个返回箭头,可返回上一个页面也可以通过方法 wx.navigateBack 返回原页面


image.png

二、wx.redirectTo(OBJECT)

关闭当前页面,跳转到应用内的某个页面。
类似于html中的 window.open('你所要跳转的页面');

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

左上角没有返回箭头,不能返回上一个页面


image.png

三、wx.switchTab(OBJECT)

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

// tab路径
{
  "tabBar": {
    "list": [{
      "pagePath": "index",
      "text": "首页"
    },{
      "pagePath": "other",
      "text": "其他"
    }]
  }
}
// 写法
wx.switchTab({
  url: '/index'
})

wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面


image.png

四、wx.reLaunch(OBJECT)

关闭所有页面,打开到应用内的某个页面。
跟wx.redirectTo 一样左上角不会出现返回箭头,但两者却不完全相同

这里要提到小程序中的 getCurrentPages() 方法

在wx.navigateTo中,每跳转一个新的页面,其原始页面就会被加入堆栈,通过调用wx.navigateBack(OBJECT)可通过获取堆栈中保存的页面 返回上一级或多级页面;

wx.redirectTo,方法则不会被加入堆栈,但仍可通过wx.navigateBack(OBJECT)方法返回之前堆栈中的页面

wx.reLaunch 方法则会清空当前的堆栈。

-----------------------------------举例------------------------------------
// 此处是A页面
wx.navigateTo({
  url: 'B?id=1'
})

// 此处是B页面
wx.navigateTo({
  url: 'C?id=1'
})

// 在C页面内 navigateBack,将返回b页面
wx.navigateBack({
  delta: 1
})
// 此处是B页面
wx.redirectTo({
 url: 'C?id=1'
 })
 // 在C页面内 navigateBack,则会返回a页面 
wx.navigateBack({
 delta: 1
 })

// 此处是B页面
wx.reLaunch({
 url: 'C?id=1'
 })
 // 在C页面内 navigateBack,则无效

五、返回上一页

// 写法
wx.navigateBack({
  delta: 1
})

六、带参数页面跳转

参考链接:https://blog.csdn.net/solocao/article/details/84590700

小程序原生写法:
参考官网:https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html

// 跳转
wx.navigateTo({
  url: 'test?id=1'
})
// 加载
Page({
  onLoad: function(option){
    console.log(option.query)
  }
})

mpvue中写法:

// 原始页面
methods: {
   goDetail() {
     wx.navigateTo({
       url: '/pages/active/detail?name=七號&sex=女'
     })
   }
 }
//  跳转后页面
methods: {
    //  获取方法
   getQuery() {
      /* 获取当前路由栈数组 */
      const pages = getCurrentPages()
      const currentPage = pages[pages.length - 1]
      const options = currentPage.options
      return options
    },
    // 调用方法
    getParameter() {
        console.log(this.getQuery())
    }
 }

七、获取上一个跳转过来的页面路径

微信小程序怎么判断是从哪个页面跳转进来的
参考链接:https://blog.csdn.net/weixin_43099985/article/details/82965689

onLoad: function (options) {
    let pages = getCurrentPages();
    let prevpage = pages[pages.length - 2];
    console.log(prevpage.route)
  },
上一篇下一篇

猜你喜欢

热点阅读