当前位置: 首页 > backend >正文

微信小程序之页面跳转(路由),navigateTo redirectTo reLaunch

作用都是跳转页面,使用的时候略有不同:

介绍:

navigateTo

  • 功能:保留当前页面,跳转到应用内的某个页面,形成页面栈的形式,可使用wx.navigateBack返回原页面。
  • 使用场景:适用于需要保留当前页面状态,后续还需返回的情况。如从商品列表页跳转到商品详情页,用户查看完详情后可返回列表页,列表页的浏览位置、筛选条件等状态都能保留。
  • 注意事项:使用navigateTo进行页面跳转时,每个页面都会被加入页面栈,而小程序页面栈的大小有限,要注意页面数量过多可能导致页面栈溢出。

redirectTo

  • 功能:关闭当前页面,跳转到应用内的某个页面。跳转后无法通过返回按钮返回到原页面,新页面会替换当前页面在页面栈中的位置。
  • 使用场景:适用于不需要保留当前页面状态,且不希望用户返回的情况。比如用户登录成功后从登录页跳转到主页,登录页的状态无需保留,也不希望用户通过返回按钮回到登录页。
  • 注意事项:跳转的目标页面必须是当前页面的同级或者子级页面,否则跳转将会失败。

 reLaunch

  • 功能:关闭所有页面,打开到应用内的某个页面。无论之前有多少页面在栈中,都会被全部清空,然后打开指定的页面。
  • 使用场景:适用于需要清空所有页面栈,重新打开一个页面的情况。比如用户退出登录后,需要清除所有已打开的页面,跳转到登录页;或者应用出现异常,需要重置到某个初始页面。
  • 注意事项:由于reLaunch会关闭所有页面,使用时要确保这是用户期望的行为,避免不必要的页面切换影响用户体验。

 代码实操:

我们在index页面上做个按钮,点击后跳转到page1页面,就像这样:

wxml代码:

<view class="indexContainer"><image class="avatarUrl" src="https://ww2.sinaimg.cn/mw690/61d7678dgy1hvt194v9kqj20p00uuape.jpg"/><text class="userName">{{msg}}</text><view class="content" bind:tap="goNext"><text>进入下一页面</text></view>
</view>

 goNext代码,我们顺便也在onHide和onUnload生命周期函数里面打上日志,方便查看:
 

/*** 生命周期函数--监听页面隐藏*/onHide() {console.log('in index onHide');},/*** 生命周期函数--监听页面卸载*/onUnload() {console.log('in index onUnload');},goNext(){wx.navigateTo({url: '/pages/page1/page1',})}

用到的样式(css)代码:


.indexContainer {display: flex;flex-direction: column;align-items: center;
}.avatarUrl {width: 200rpx;height: 200rpx;margin: 100rpx 0;border-radius: 50%;
}.userName{font-size: 32rpx;margin: 100rpx 0;
}.content{width: 300rpx;height: 80rpx;line-height: 80rpx;font-size: 28rpx;text-align: center;border: 1rpx solid #333;border-radius: 10rpx;
}

这个时候我们点击按钮,跳转到下一页:

 navigateTo 保留当前页面,并没有销毁,只是隐藏了

接下来,我们把goNext里面调用的navigateTo 更换成redirectTo,看看效果,

 redirectTo 关闭当前页面,看到了吧,index页面被销毁了。

接下来,我们把goNext里面调用的redirectTo更换成reLaunch,看看效果,

reLaunch  关闭所有页面,index页面同样被销毁了。

这时候,我们看不出来 redirectTo 和 reLaunch 有什么区别,这个时候,我们再增加一个页面page2,在page1中跳转,index中的跳转改为navigateTo

代码如下:

index.js

/*** 生命周期函数--监听页面隐藏*/onHide() {console.log('in index onHide');},/*** 生命周期函数--监听页面卸载*/onUnload() {console.log('in index onUnload');},goNext(){wx.navigateTo({url: '/pages/page1/page1',})}

page1.js

/*** 生命周期函数--监听页面隐藏*/onHide() {console.log('in page1 onHide');},/*** 生命周期函数--监听页面卸载*/onUnload() {console.log('in page1 onUnload')},goNext(){wx.redirectTo({url: '/pages/page2/pages',})}

page1.wxml

<view class="indexContainer"><button class="content" bind:tap="goNext">跳转到下一页</button>
</view>

page1.wxss

/* pages/page1/page1.wxss */
.indexContainer {display: flex;flex-direction: column;align-items: center;
}
.content{width: 300rpx;height: 80rpx;line-height: 80rpx;font-size: 28rpx;text-align: center;border: 1rpx solid #333;border-radius: 10rpx;
}

好,这个时候,我们连续跳转两次,到达page2,看日志的显示:

我们在page1中使用了redirectTo,所以page1被销毁了,index还在。

我们把redirectTo改为reLaunch,看效果:

 

看到了吧,这次index页面也被销毁了,这就是区别。

客官,看明白了么! 

http://www.xdnf.cn/news/13605.html

相关文章:

  • 大型语言模型的中毒攻击的系统评价
  • 一款自制的OpenMV4模块
  • 网络原理8 - HTTP协议1
  • QDialog的show()方法与exec_()方法的区别详解
  • C#.Net 使用NPOI库导出Excel(含列宽度自适应) 及 根据Excel文件生成DataTable
  • 【多智能体】基于嵌套进化算法的多代理工作流
  • 硬件学习笔记--67 接线端子压缩比相关要求
  • Python实战:高效连接与操作Elasticsearch的完整指南
  • 知名开源项目被收购,用户发现项目被“投毒”
  • 【自考】《计算机信息管理课程实验(课程代码:11393)》华师自考实践考核题型解析说明:C++ 与 mysql 实践题型与工具实践题分析
  • 火山引擎 veFuser:面向扩散模型的图像与视频生成推理服务框架
  • 机器学习四剑客:Numpy、Pandas、PIL、Matplotlib 完全指南
  • 【大模型训练】allgatherEP 过程及reduce-scatter的具体例子
  • 使用Docker申请Let‘s Encrypt证书
  • xilinx的GT配置说明(二)
  • 【HTTP重定向与缓存机制详解】
  • 芯伯乐XBLW GT712选型及应用设计指南
  • Spring Cloud业务相关问题
  • 姜伟生《统计至简》
  • 宏基因测序宿主污染太严重,无解?
  • 御微半导体面试总结
  • UE5.2像素流实现公网访问
  • 40.第二阶段x64游戏实战-封包-添加发包功能
  • 13.react与next.js的特性和原理
  • LangChain MCP Adapters Quickstart
  • 无人机避障——感知篇(基于ZED2实现Vins Fusion)
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: SameText, SameStr, 比较字符串更简单
  • Git 介绍、安装以及基本操作
  • 【行云流水AI笔记】游戏里面的强化学习使用场景
  • 博客系统自动化测试