小程序页面跳转的几个方法和区别

目前小程序的几个页面跳转方式的主要区别就两点:

  • 1.是否可以返回上一个页面
  • 2.目标页面是否是tabBar

两个通用属性

  • 1.限制:目前页面路径最多只能十层。
  • 2.分类:wx.navigateTowx.redirectTo不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面

下面是对几个跳转方式的整理说明

1. wx.navigateTo({})

保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回;

关于Url参数:

  • 不能跳转到tabBar页面
  • 带参格式:【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】
wx.navigateTo({
    url:'../test/test?id=1&page=4',//跳转页面的路径,可带参数?隔开,不同参数用 & 分隔;相对路径,不需要.wxml后缀
    success:function(){}        //成功后的回调;
    fail:function(){}          //失败后的回调;
    complete:function(){}      //结束后的回调(成功,失败都会执行)
})

传递的参数在接收页面onLoad()函数中得到值:option.id就可以得到了
onLoad: function (option) {
  console.log(option)//可以打印一下option看查看参数
    this.setData({
        id:option.id,
});

1.1.wx.navigateBack(OBJECT)

关闭当前页面,返回上一页面或多级页面。
可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。

关于参数:

delta–>类型:Number,
默认值:1 ,
说明:返回的页面数,如果 delta 大于现有页面数,则返回到首页。

注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码

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

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

// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
})

2.wx.redirectTo(OBJECT)

关闭(之前的页面是回不去的)当前页面,跳转到非tabBar的某个页面

关于Url参数:

  • 不能跳转到tabBar页面
  • 【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】

3.wx.reLaunch(OBJECT)

关闭(之前的页面是回不去的)所有页面,打开到应用内的某个页面。

关于Url参数:

  • 【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】
  • 【如果是跳转到tabBar页面,则不能带参数】

4.wx.switchTab(OBJECT)

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

关于参数:

  • 目标页面必须是在:app.json 的 tabBar 中定义的页面
  • 不能带参数
wx.switchTab({ 
    url: '/pages/home/home' 
});

5.组件 <navigator>

直接写在布局里面的跳转方式

参数说明:
url:和上面几种方式的规则一样,当前小程序内的跳转链接
open-type(跳转方式):有效值如下表

参数说明
navigate对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能
redirect对应 wx.redirectTo 的功能
switchTab对应 wx.switchTab 的功能
reLaunch对应 wx.reLaunch 的功能
navigateBack对应 wx.navigateBack 的功能

eg:

<navigator url="/pages/detail/detail">点击跳转</navigator>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序页面跳转传递值的几种方法如下: 1. 使用wx.navigateTo和wx.navigateBack函数的url参数传递值 在源页面使用wx.navigateTo函数跳转到目标页面时,可以在url参数中携带需要传递的值。例如: ``` wx.navigateTo({ url: '/pages/target/target?id=123&name=test' }) ``` 在目标页面的onLoad函数中可以获取这些值: ``` onLoad: function(options) { console.log(options.id) // 输出123 console.log(options.name) // 输出test } ``` 如果要在目标页面中修改这些值并返回到源页面,则可以使用wx.navigateBack函数的delta参数和wx.getCurrentPages函数获取源页面实例对象,然后调用实例对象的setData方法更新源页面数据。例如: 在目标页面中修改值并返回: ``` wx.navigateBack({ delta: 1, success: function(res) { let pages = getCurrentPages() let prevPage = pages[pages.length - 2] prevPage.setData({ id: 456, name: 'update' }) } }) ``` 2. 使用全局变量传递值 在app.js中定义一个全局变量,在需要传递值的页面中修改该变量的值,并在需要获取该值的页面中使用getApp函数获取app实例对象来获取该变量的值。例如: 在app.js中定义全局变量: ``` App({ globalData: { id: '', name: '' } }) ``` 在需要传递值的页面中修改该变量的值: ``` let app = getApp() app.globalData.id = 123 app.globalData.name = 'test' ``` 在需要获取该值的页面中获取该变量的值: ``` let app = getApp() console.log(app.globalData.id) // 输出123 console.log(app.globalData.name) // 输出test ``` 3. 使用本地存储传递值 在源页面中使用wx.setStorageSync函数将需要传递的值存储到本地存储中,在目标页面中使用wx.getStorageSync函数获取该值,并在需要修改该值并返回到源页面时使用wx.setStorageSync函数更新该值。例如: 在源页面中存储需要传递的值: ``` wx.setStorageSync('id', 123) wx.setStorageSync('name', 'test') ``` 在目标页面中获取该值: ``` let id = wx.getStorageSync('id') let name = wx.getStorageSync('name') console.log(id) // 输出123 console.log(name) // 输出test ``` 在目标页面中修改该值并返回: ``` wx.navigateBack({ delta: 1, success: function(res) { wx.setStorageSync('id', 456) wx.setStorageSync('name', 'update') } }) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值