小程序组件 —— 26 组件案例 - 跳转到商品列表
在上一节实现了商品导航区域,这一节实现跳转到商品列表的功能;当用户在点击商品导航时,需要能够跳转到商品列表页面;在微信小程序中,如果需要进行跳转,需要使用 navigator 组件,navigator 组件有两个常用的属性:
- url:当前小程序内的跳转链接,也就是点击之后需要跳转到的页面路径;
open-type:跳转方式navigate:保留当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面;redirect:关闭当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面;switchTab:跳转到 tabbar 页面,并关闭其它所有非 tabbar 页面;reLaunch:关闭所有页面,打开到应用内的某个页面;navigateBack:关闭当前页面,返回上一页面或多级页面;
使用 navigator 时有两个注意事项:
url路径后可以带参数。参数和路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔,例如:/list?id=10&name=hua,list页面可以在onLoad(options)生命周期函数中获取传递的参数;open-type="switchTab"时不支持传参;
下面在开发者工具中演示一下具体用法:
在 index.wxml 中添加 navigator 组件,如下:
<navigator url="/pages/list/list">到商品列表页面</navigator>
navigator 组件中的 url 是指小程序内的跳转链接,当点击文本时,进入这个页面对应的路由;在微信小程序中,每个页面的路径都已经存放到根目录的 app.json 文件中的 pages 字段中,如下:
"pages": ["pages/index/index","pages/cate/cate","pages/cart/cart","pages/profile/profile","pages/list/list"]
我们找到 pages 中的 pages/list/list 路由,并粘贴到 navigator 组件的 url 中,注意在复制粘贴过程中,需要在 pages/list/list 前面添加 / ,否则无法正常跳转,填写之后,点击文本,就能实现跳转功能,如下:

下面研究一下 open-type 属性的功能,在 index.wxml 中添加下面的代码:
<navigator url="/pages/list/list" open-type="navigate">到商品列表页面</navigator>
<navigator url="/pages/cate/cate" open-type="navigate">到商品分类页面</navigator>

当我们使用 open-type 属性的 navigate 属性值时,当我们点击第一个文本能够正常跳转,但是点击第二个“跳转到商品分类页面”时,无法正常跳转;这是因为 list 商品列表页面是一个非 tabbar 页面,cate 商品分类页面是一个 tabbar 页面;navigate 属性会导致无法跳转到 tabbar 页面;
redirect 属性同理,只能跳转到非 tabbar 页面,无法跳转 tabbar 页面:
<navigator url="/pages/list/list" open-type="redirect">到商品列表页面</navigator>
<navigator url="/pages/cate/cate" open-type="redirect">到商品分类页面</navigator>

虽然 navigate 和 redirect 都是只能跳转到非 tabbar 页面,但是两者还是有区别的:
navigate属性:跳转到对应的页面之后,有返回上一页的箭头;

redirect属性:跳转到对应的页面之后,有返回当前项目首页的一个图标:

redirect 方法的存在有其特定的意义和用途:
- 简化页面栈: 在某些情况下,页面的历史记录并不重要,或者不希望用户返回到之前的页面。使用 redirect 可以避免页面栈中累积过多的页面,简化页面管理;
- 流程控制: 在一些需要强制用户完成某个流程的场景中,使用 redirect 可以确保用户无法返回到之前的步骤。例如,在用户完成某个操作后,强制跳转到结果页面,而不允许返回到操作页面;
- 性能优化: 由于 redirect 会销毁当前页面,可能在某些情况下有助于释放内存,特别是在页面内容较多或复杂时;
下面继续分析一下 open-type 中的 switchTab 属性:
<navigator url="/pages/list/list" open-type="switchTab">到商品列表页面</navigator>
<navigator url="/pages/cate/cate" open-type="switchTab">到商品分类页面</navigator>

可以发现 switchTab 属性只能跳转到 tabbar 页面,无法跳转到 tabbar 页面;
下面继续分析一下 open-type 中的 switchTab 属性:
<navigator url="/pages/list/list" open-type="reLaunch">到商品列表页面</navigator>
<navigator url="/pages/cate/cate" open-type="reLaunch">到商品分类页面</navigator>

在微信小程序中,reLaunch 方法用于关闭所有页面并打开到应用内的某个页面。与其他页面跳转方法(如 navigateTo、redirectTo 和 switchTab)相比,reLaunch 有其独特的功能和用途:
-
功能
- 关闭所有页面:
reLaunch会关闭当前小程序中的所有页面,清空页面栈; - 打开指定页面: 在关闭所有页面后,
reLaunch会打开指定的页面,使其成为新的首页;
- 关闭所有页面:
-
用途
- 重置应用状态: 在某些情况下,可能需要重置整个应用的状态。例如,用户注销登录后,可能需要返回到登录页面并清除之前的所有页面历史记录。
reLaunch可以实现这一需求; - 流程结束: 在完成某个流程(如注册、支付等)后,可能需要返回到应用的首页或某个特定页面,并清除流程中的所有页面记录;reLaunch
在这里插入代码片可以确保用户无法通过返回按钮回到流程中的页面; - 错误处理: 在遇到严重错误或异常情况时,可能需要重置应用并返回到某个特定页面(如错误提示页面或首页)。
reLaunch可以帮助开发者实现这一需求;
- 重置应用状态: 在某些情况下,可能需要重置整个应用的状态。例如,用户注销登录后,可能需要返回到登录页面并清除之前的所有页面历史记录。
-
注意事项
- 页面路径:
reLaunch方法的 url 参数必须是应用内的有效页面路径; - 页面栈清空: 使用
reLaunch后,所有之前的页面都会被关闭,用户无法通过返回按钮回到之前的页面; - 性能影响: 由于
reLaunch会关闭所有页面并重新打开一个新页面,可能会对应用的性能产生一定影响,特别是在页面内容较多或复杂时;
- 页面路径:
下面继续分析一下 open-type 中的 navigateBack 属性:
在 index.wxml 中添加下面的内容:
<navigator url="/pages/list/list" open-type="navigate">到商品列表页面</navigator>
在 list.wxml 中添加对应代码:
<navigator open-type="navigateBack">返回上一页</navigator>
当从 index 进入到 list 页面时,点击 list 页面的 返回上一页 就能返回到 index 页面(上一页),所以说 navigateBack 的功能是返回上一页或者返回前几页,navigateBack 默认只能返回上一页,如果需要返回前几页,需要添加一个属性 delta。delta 用于控制返回的层级(指定返回前几页):
<navigator open-type="navigateBack" delta="1">返回上一页</navigator>
如果需要传递参数,需要遵循规范,路径和参数之间需要以问号进行分隔,参数键和值之间需要使用 = 来进行连接,如果有多个参数需要使用 & 连接符进行分隔:
<navigator url="/pages/list/list?id=10&num=hua" open-type="navigate">到商品列表页面</navigator>
可以看到,在跳转的时候,页面参数已经成功带上:

如果想获取 url 中的参数,需要在 list.js 文件中找到 onLoad 生命周期函数,onLoad 函数有一个默认的 options 形参,通过 options 形参就能够接收传递的参数:
onLoad(options) {console.log(options);},

通过上面的讲解我们大致了解了 navigator 组件的用法,下面我们使用 navigator 实现产品需求:当点击商品导航时跳转到对应的商品列表中,修改前面编写的商品导航区代码,如下:
<view class="good-nav"><view><navigator url="/pages/list/list"><image src="../../assets/category/cate-1.png" mode="" /><text>鲜花玫瑰</text></navigator></view><view><navigator url="/pages/list/list"><image src="../../assets/category/cate-1.png" mode="" /><text>鲜花玫瑰</text></navigator></view><view><navigator url="/pages/list/list"><image src="../../assets/category/cate-1.png" mode="" /><text>鲜花玫瑰</text></navigator></view><view><navigator url="/pages/list/list"><image src="../../assets/category/cate-1.png" mode="" /><text>鲜花玫瑰</text></navigator></view><view><image src="../../assets/category/cate-1.png" mode="" /><text>鲜花玫瑰</text></view>
</view>
具体效果如下:

下面修改一下样式:
view {navigator {display: flex;flex-direction: column;align-items: center;}image {width: 80rpx;height: 80rpx;}text {font-size: 24rpx;margin-top: 12rpx;}}
- navigator:
- display: flex;:使用弹性盒布局,使得子元素可以灵活地排列。
- flex-direction: column;:将子元素垂直排列(从上到下)。
- align-items: center;:将子元素在交叉轴(水平轴)上居中对齐。
- image:
- width: 80rpx;:设置图像的宽度为80rpx(responsive pixel,响应式像素),适应不同屏幕尺寸。
- height: 80rpx;:设置图像的高度为80rpx,保持图像的正方形比例。
- text:
- font-size: 24rpx;:设置文本的字体大小为24rpx,确保在不同设备上有良好的可读性。
- margin-top: 12rpx;:在文本和上方的图像之间添加12rpx的上外边距,增加视觉上的间距,使得布局更加美观。
参考视频:尚硅谷微信小程序开发教程
相关文章:
小程序组件 —— 26 组件案例 - 跳转到商品列表
在上一节实现了商品导航区域,这一节实现跳转到商品列表的功能;当用户在点击商品导航时,需要能够跳转到商品列表页面;在微信小程序中,如果需要进行跳转,需要使用 navigator 组件,navigator 组件有…...
【Spring学习】为什么Spring中的IOC(控制反转)能够降低耦合性(解耦)?
为什么Spring中的IOC能够降低耦合性? 前言1.传统方式2.使用接口3.工厂方法4.反射改造工厂类5.IOC总结参考 前言 本文目标:本文旨在讲解为什么IOC能够降低耦合性。 情景:假设你是一个爱摸鱼的程序员,现在需要测试一个游戏&#x…...
机场安全项目|基于改进 YOLOv8 的机场飞鸟实时目标检测方法
目录 论文信息 背景 摘要 YOLOv8模型结构 模型改进 FFC3 模块 CSPPF 模块 数据集增强策略 实验结果 消融实验 对比实验 结论 论文信息 《科学技术与工程》2024年第24卷第32期刊载了中国民用航空飞行学院空中交通管理学院孔建国, 张向伟, 赵志伟, 梁海军的论文——…...
卸载干净 IDEA(图文讲解)
目录 1、卸载 IDEA 程序 2、注册表清理 3、残留清理 1、卸载 IDEA 程序 点击屏幕左下角 Windows 图标 -> 设置-控制面板->intellij idea 勾选第一栏 Delete IntelliJ IDEA 2022.2 caches and local history,表示同时删除 IDEA 本地缓存以及历史。 Delete I…...
云端微光,AI启航:低代码开发的智造未来
文章目录 前言一、引言:技术浪潮中的个人视角初次体验腾讯云开发 Copilot1.1 低代码的时代机遇1.1.1 为什么低代码如此重要? 1.2 AI 的引入:革新的力量1.1.2 Copilot 的亮点 1.3 初学者的视角1.3.1 Copilot 带来的改变 二、体验记录ÿ…...
工程师了解的Lua语言
1、关于lua语言 lua语言是用于嵌入式领域当中的一门脚本语言,其实在大学期间,我也没有接触过这门语言,但是在未来的发展之路当中,需要用到这门语言,所以在我的知识库当中添加这门语言知识是必要而且重要的,…...
著名的软件都用什么语言编写?
你是否曾经好奇,身边那些耳熟能详的软件,它们究竟是用什么语言编写的?从操作系统到浏览器、从数据库到编程工具,每一款软件背后都承载着开发者们的智慧与技术选型。那么,究竟哪些编程语言成就了这些世界级的软件呢&…...
设计模式 结构型 代理模式(Proxy Pattern)与 常见技术框架应用 解析
代理模式(Proxy Pattern)是一种常见的设计模式,在软件开发中有着广泛的应用。其核心思想是通过创建一个代理类来控制对另一个对象的访问,从而实现对目标对象功能的扩展、保护或其他附加操作。 一、核心思想 代理模式的核心思想在…...
Linux环境(CentOs7) 安装 Node环境
Linux环境(CentOs7) 安装 Node环境 使用NodeSource安装Node.js 1、清除缓存(可选但推荐) sudo yum clean all2、添加NodeSource仓库,根据你想要安装的Node.js版本,选择相应的NodeSource安装脚本。例如&am…...
Tailwind CSS 实战:现代登录注册页面开发
在前端开发中,登录注册页面是最常见的需求之一。一个设计精美、交互友好的登录注册页面不仅能提升用户体验,还能增加产品的专业度。本文将详细介绍如何使用 Tailwind CSS 开发一个现代化的登录注册页面。 设计思路 在开始编码之前,我们先明…...
Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…...
反向传播算法的偏置更新步骤
偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…...
条款47:请使用 traits classes 表现类型信息(Use traits classes for information about types)
条款47:请使用 traits classes 表现类型信息 1.1 提出问题 想一想,下面的功能如何实现?(可以查看std::advance源码) template<typename IterT, typename DistT> void advance(IterT& iter, DistT d); /…...
yolov5和yolov8的区别
1. yolov5有建议框,yolov8没有建议框 2. yolov5标签中有自信度,而yolov8没有自信度。因为自信度是建议框和真实框的交集 3. yolov5有三个损失函数,回归问题:预测框和建议框的损失(中心点宽高偏移量的损失):CIOUFocal…...
Redis 实现分布式锁
文章目录 引言一、Redis的两种原子操作1.1 Redis 的原子性1.2 单命令1.3 Lua 脚本1.4 对比单命令与 Lua 脚本 二、Redis 实现分布式锁2.1 分布式锁的概念与需求2.1.1 什么是分布式锁?2.1.2 分布式锁的常见应用场景 2.2 基于 Redis 的分布式锁实现2.2.1 锁的获取与释…...
django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程
django后端环境介绍: Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下: Package Version -…...
SpringSpringBoot常用注解总结
目录 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HTTP 请求类型 3.1. GET 请求 3.2. POST 请求 3.3. PUT 请求 3.4. DELETE 请…...
24.小R的随机播放顺序<字节青训营-中等题>
1.题目 问题描述 小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌,播放后将其从歌单中移除。如果歌单中还有歌曲,则会将当前第一首歌移到最后一首。这个过程会一直重复,直到歌单中没有任何歌曲。 例如,给定歌单 [5, …...
【QT】增删改查 XML 文件的类
使用单例类模板实现的对XML文件的节点、属性、文本进行增删改查,可以直接用! 直接POST代码,比较简单好用。 针对以下格式的xml文件比较适用 每个节点的名称都不一样,节点包含了各种属性。 <?xml version="1.0" encoding="UTF-8"?> <config…...
Linux-掉电保护方案
参考链接 https://blog.csdn.net/pwl999/article/details/109411919硬件设计 设备树 驱动程序 #include <linux/module.h> #include <linux/init.h> #include <linux/interrupt.h> #include <linux/gpio.h>int irq;//中断服务函数 irqreturn_t tes…...
CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测
CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测无人机技术的普及带来了新的安全挑战,从隐私侵犯到关键设施威胁,反无人机技术正成为计算机视觉领域的热点。CVPR 2023反无人机竞赛提供的开源数据集和基线模型…...
Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)
Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)在当今微服务架构盛行的时代,Go语言因其高性能和并发优势成为后端开发的热门选择。而Goframe作为一款企业级的Go应用开发框架,提供了从数据库操作到API…...
【CP-05】RTE运行时环境 - SWC的操作系统接口
CP-05_RTE运行时环境【CP-05】RTE运行时环境 - SWC的“操作系统接口”前言在AUTOSAR架构中,RTE(Runtime Environment,运行时环境)是一个常被提及却难以理解的概念。它像是应用层软件组件(SW-C)与底层基础软…...
从Office功能区的“局外人“到“掌控者“:Office RibbonX Editor深度指南
从Office功能区的"局外人"到"掌控者":Office RibbonX Editor深度指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/g…...
【紧急预警】92%的DeepSeek测试用例生成失败源于这4个隐性配置缺陷——资深SDET连夜整理修复清单
更多请点击: https://codechina.net 第一章:DeepSeek测试用例生成的现状与危机本质 当前,DeepSeek系列大模型(如DeepSeek-Coder、DeepSeek-VL)在代码生成与理解任务中展现出强大能力,但其测试用例自动生成…...
放弃编码器!纯靠MPU6050和PID算法,手把手教你用TT马达实现平衡小车稳定控制(STM32F103C8T6实战)
纯MPU6050STM32F103的TT马达平衡车实战:无编码器PID控制全解析当大多数平衡小车方案都在强调编码器对速度反馈的不可或缺性时,我们决定挑战一个更极简的配置:仅用5美元的TT马达、9轴的MPU6050和STM32F103C8T6最小系统板,完全舍弃编…...
MongoDB Limit 与 Skip 方法详解
MongoDB Limit 与 Skip 方法详解 引言 MongoDB 是一个高性能、可伸缩的文档存储系统,它提供了强大的数据存储和查询功能。在处理大量数据时,Limit 与 Skip 方法是 MongoDB 中常用的查询优化工具。本文将详细介绍 MongoDB 中的 Limit 与 Skip 方法,包括其基本用法、性能影响…...
从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战
从RD、CS到WK:SAR成像算法选型实战指南 当无人机掠过灾区上空,或卫星扫描地球表面时,合成孔径雷达(SAR)正通过电磁波穿透云层和黑暗,将地面信息转化为高分辨率图像。而决定图像质量的关键,在于工…...
Keil µVision链接器错误204解决方案
1. 问题现象与背景解析最近在使用Keil Vision进行嵌入式开发时,不少工程师遇到了一个令人头疼的链接器错误。具体表现为编译时出现"FATAL ERROR 204: INVALID KEYWORD"的致命错误,错误位置指向链接器控制文件中的特定行。这个问题在C166和C51两…...
Qri高级功能:如何使用JSON Schema验证和描述数据集结构
Qri高级功能:如何使用JSON Schema验证和描述数据集结构 【免费下载链接】qri youre invited to a data party! 项目地址: https://gitcode.com/gh_mirrors/qr/qri Qri是一个强大的开源数据协作工具,它提供了丰富的功能来帮助用户管理、共享和验证…...
