微信小程序 | 08.路由跳转

1.章节概述

  • <navigateTo>实现跳转更方便,不用考虑元素堆叠问题,优先选择
  • 在路由界面js的onLoad函数中接收参数
  • 若跳转方式为switchTab,同时还要传参,则通过wx.switchTab( )实现
  • switchTab传参借助本地缓存来实现

2.章节准备

在讲述本章节内容前,先进行一些准备:

  • 创建"1"、“2”、"3"三个页面,这三个页面都是tabBar页面
  • 创建"a"、“b”、"c"三个页面,这三个页面不是tarBar页面

3.<navigator>跳转

3.1.基本用法

<navigator>是较为推荐的路由跳转标签,相当于a标签。基本用法如下:

<navigator url="/pages/a/a">
	<view>...</view>
</navigator>

QQ录屏20211014123431

<navigator>标签的内容中可以是任意标签,不设置open-type属性(默认值为navigate)的话,只能跳转到非tarBar界面

3.2.进阶用法

<navigator>中还可以添加其他属性,参考官方文档<navigator>

常用属性说明接收参数
url跳转链接String
target从哪里开始发生跳转,默认值selfself/miniProgram
open-type跳转方式,默认值navigate详见下表

openType的有效值如下:

image-20211014124450314

下面演示将open-type设置为switchTab后,跳转到tarBar界面

QQ录屏20211014130239

3.3.路由传参

单纯通过<navigator>实现的话,唯有open-type为navigate时才能实现传参。

如果open-type为switchTab,<navigator>便无法实现,必须在js中调用路由函数才能实现。换言之,路由跳转到tarBar界面并传参,必须通过js实现

默认跳转方式(navigate)下,参数直接拼接在url上就能传递

  1. 在<navigator>的url后拼接参数

    image-20211014131959770

  2. 在对应页面(b)的js文件中,定义onLoad函数,通过options获取参数

    image-20211014132210704

4.js中调用路由函数跳转

参考文章:微信小程序(一)[路由页面跳转]

  • wx.navigateTo相当于open-type="navigate",只能跳转到非tarBar页面
  • wx.switchTab相当于open-type="switchTab",只能跳转到tarBar页面

4.1.wx.navigateTo( )

  1. wxml中,为需要实现点击跳转的元素添加bindtap:函数名

    image-20211014134115734

  2. 在js中定义自定义函数,并在其中调用路由函数wx.navigateTo( ),可以传参。

QQ录屏20211014133837

4.2.wx.switchTab( )

上文提到,如果希望跳转到tarBar界面并传参,必须通过js函数实现。

实现思路为:点击时将参数放入缓存,随后在跳转页面的onLoad中取出参数

  1. wxml中,为需要实现点击跳转的元素添加bindtap:函数名,同时还可以添加data-xxx="yyy"将参数 xxx : yyy加入到事件源对象e

    image-20211014135115332

  2. 本页面的js中,定义switchTab1(e)。先输出事件源对象e寻找参数

    QQ录屏20211014135405

    易错:通过data-xxx="yyy"传入的参数名均为小写

    image-20211014140055742

  3. 从上图找到参数位置为e.currentTarget.dataset.usersex,将其存入缓存

    image-20211014140204422

  4. 调用wx.switchTab跳转到tarBar页面

    image-20211014140348708

  5. 在tarBar页面"1"的js中,找到onLoad函数,在其中取出缓存中的值

    QQ录屏20211014140631

4.3.可能出现的情况:点击不触发函数

有时点击有bindtap属性的元素,并不会触发函数。

原因是在这个元素的表面有其他元素的阻挡,导致用户没能点击到目标元素。

对此,解决的方案是:设置目标元素的wxss样式,提高其z-index值:

image-20211014141445061

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值