微信小程序使用navigator实现页面跳转功能

作者:早起的年轻人 时间:2024-04-25 10:36:14 

前言

在微信小程序开发中,navigator 用来实现页面路由功能,比如 A页面 中点击页面打开B页面

1 navigator 默认方式打开新的页面

<navigator url="/pages/code1/navigator/bPage">
 <text>打开B页面</text>
</navigator>

等效于

<navigator url="/pages/code1/navigator/bPage" open-type="navigate">
 <text>打开B页面</text>
</navigator>

微信小程序使用navigator实现页面跳转功能

open-type 是指定了页面跳转的方式,默认是 navigate ,页面层叠方式如下

微信小程序使用navigator实现页面跳转功能

对应的有点击事件,在JS中打开页面

<view bindtap="openNavigatorBPage" data-index='1'><text>打开B页面</text></view>

在这里 data-index 是我页面绑定的参数,在对应的方法中通过 currentTarget.dataset.index 方式获取

如果我写的是 data-id ,那么点击事件中获取方式为 currentTarget.dataset.id

openNavigatorBPage:function (options) {
   //获取绑定的参数
   let id = options.currentTarget.dataset.index;
   wx.navigateTo({
     url: '/pages/code1/navigator/bPage?id='+id,
   })
 },

然后 在目标页面中的 onLoad 方法中可以获取这个参数

onLoad: function (options) {
   let id = options.id;
 },

2 redirect 替换当前页面

open-type 可取值为 redirect ,就是直接替换当前页面

<!--类似a标签  open-type 跳转方式-->
<navigator url="/pages/code1/navigator/bPage" open-type="redirect">
 <text>打开B页面</text>
</navigator>

微信小程序使用navigator实现页面跳转功能

对应的 js 方法为

wx.redirectTo({
   url: '/pages/code1/navigator/bPage?id='+id,
 })

3 reLaunch 重新加载当前页面

open-type 可取值为 reLaunch ,就是相当于是重新加载了一下当前页面

<navigator url="/pages/code1/navigator/bPage" open-type="reLaunch">
 <text>打开B页面</text>
</navigator>

对应的 js 方法为

wx.reLaunch({
   url: '/pages/code1/navigator/bPage?id='+id,
 })

4 navigateBack 关闭当前页面

可以直接在页面中 使用 navigator 标签嵌套

<navigator open-type="navigateBack">
 <text>关闭页面</text>
</navigator>

等效于

<view bindtap="closeBPage" data-index='1'>
 <text>关闭B页面</text>
</view>
closeBPage: function () {
   wx.navigateBack()
 },

5 navigateBack 关闭当前页面 并携带参数

A页面通过wx.navigateTo跳入到B页面,然后B页面执行wx.navigateBack返回到A页面时候传给A页面参数

A页面中定义接收

Page({

/**
  * 页面的初始数据
  */
 data: {
   param: undefined,
 },

/**
  * 生命周期函数--监听页面显示
  */
 onShow: function () {
   let param = this.data.param;
   if (param) {
     //有回传参数 处理页面业务逻辑
   }
 },
);

//打开B页面
 openNavigatorBPage: function (options) {
   //获取绑定的参数
   let id = options.currentTarget.dataset.index;
   wx.re({
     url: '/pages/code1/navigator/bPage?id=' + id,
   })
 },

在B页面中,关闭B页面的时候,设置回传参数

closeBPage: function () {
   //getCurrentPages()函数是用来获取当前页面栈的实例,
   //返回的是一个按栈的顺序排列的数组pages_arr,且数组中的第一项为首页,最后一项为当前页。
   //获取当前页面js里面的pages里的所有信息。
   let pages = getCurrentPages();
   //pages[pages.length - 2]是指的上一页,然后获取到上一个页的page对象后直接执行修改param的操作,这样就实现了在B页面修改A页面数据的功能
   let prevPage = pages[pages.length - 2];
   prevPage.setData({
     param: 111, // 设置需要传递的参数

})
   wx.navigateBack({
     delta: 1
   })
 },

完毕

补充:解决微信小程序navigator点击无法跳转的问题

最近在搞微信小程序时发现页面跳转不成功,也没有报错,最后查了很多资料终于解决了问题,浪费了很多时间,现将可能的原因和我的解决方案列出来供各位参考:

1、app.json里面是否配置了页面,如果未配置,请在pages中添加。

微信小程序使用navigator实现页面跳转功能

2、跳转路径是否正确,尽量不要用相对路径,使用绝对路径&rsquo;/pages/&hellip;&rsquo;。

3、分清几种跳转的方式,特别是TabBar中要使用wx.switchTab。

4、(最坑的问题,我遇到的问题就是这个)如果之前在app.json中设置了TabBar并且其中list中已有路径,那么在其它地方就不能再使用,使用不报错,但是也无效,不会发生跳转。例如我在TabBar中的list中设置了一个pages/shoplist/shoplist路径,而我想在index页面中通过点击一个navigator跳转到/pages/shoplist/shoplist这个页面,就不能进行跳转.

微信小程序使用navigator实现页面跳转功能

发现无法跳转,并且也不报错,就很奇怪

后来发现微信小程序开发中如果之前在app.json中设置了TabBar并且其中list中已有路径,那么在其它地方就不能再使用,使用不报错,但是也无效,不会发生跳转。

微信小程序使用navigator实现页面跳转功能

将tabbar下的pages/shoplist/shoplist路径对应的对象删除之后,再在index页面中点击navigator,就可以跳转到想要的页面了

来源:https://blog.csdn.net/zl18603543572/article/details/122084147

标签:微信小程序,navigator,页面跳转
0
投稿

猜你喜欢

  • python selenium 弹出框处理的实现

    2022-12-05 14:19:19
  • Vue自定义可以选择日期区间段的日历插件

    2024-05-11 09:11:19
  • CSS绝对定位在宽屏分辨率下错位

    2009-07-28 12:24:00
  • Python实现最大子序和的方法示例

    2023-04-08 03:30:38
  • python中的反斜杠问题深入讲解

    2023-04-20 14:08:36
  • Python使用PDFMiner解析PDF代码实例

    2023-03-30 06:56:45
  • 基于python list对象中嵌套元组使用sort时的排序方法

    2022-11-04 03:38:21
  • python np.arange 步长0.1的问题需要特别注意

    2021-09-26 08:49:49
  • 详解vue的diff算法原理

    2023-07-02 16:49:44
  • Python自然语言处理之切分算法详解

    2023-02-02 04:46:34
  • Oracle数据库的备份及恢复策略研究

    2010-07-16 12:54:00
  • Pytorch中的Broadcasting问题

    2022-10-03 06:26:58
  • python队列queue模块详解

    2023-03-28 17:26:02
  • Windows下ORACLE 10g完全卸载的方法分析

    2024-01-21 16:51:32
  • SQL Server可写脚本和编程扩展SSIS包

    2009-01-20 16:29:00
  • Windows 下python3.8环境安装教程图文详解

    2023-05-09 09:55:09
  • python实现自动获取IP并发送到邮箱

    2023-02-15 13:09:56
  • 安装的mysql中没有my.ini文件的解决方法

    2024-01-27 21:26:11
  • python操作微信自动发消息的实现(微信聊天机器人)

    2021-01-06 23:22:24
  • Python使用树状图实现可视化聚类详解

    2021-07-08 13:41:25
  • asp之家 网络编程 m.aspxhome.com