小程序API —— 54 路由与通信 - 编程式导航
在小程序中实现页面的跳转,有两种方式:
- 声明式导航:navigator 组件
- 编程式导航:使用小程序提供的 API

编程式导航 API 提供了五个常用的 API 方法:
- wx.navigateTo():保留当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面;
- wx.redirectTo():关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到 tabbar 页面;
- wx.switchTab():跳转到 tabBar 页面,路径后不能带参数;
- wx.reLaunch():关闭所有页面,打开到应用内的某个页面;
- wx.navigateBack():关闭当前页面,返回上一页面或者多级页面;
在使用编程式导航进行页面切换时,可以在路径后面加上参数,参数和路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数使用 & 分隔,例如:path?key=value&key2=value2,参数需要在跳转到页面的 onLoad 钩子函数中通过形参进行接收;
下面使用微信开发者工具演示一下如何使用这五个常用的 API 方法,同时演示一下如何传递参数:
- 演示 wx.navigateTo 用法:
-
在 pages/cate/cate.wxml 中添加按钮代码,如下:
<button plain type="warn" bind:tap="navigateTo">navigateTo</button> <button plain type="primary" bind:tap="redirectTo">redirectTo</button> <button plain type="warn" bind:tap="switchTab">switchTab</button> <button plain type="primary" bind:tap="reLaunch">reLaunch</button> <button plain type="warn" bind:tap="navigateBack">navigateBack</button> -
在 pages/cate.cate.js 中添加跳转代码,如下:
Page({navigateTo(){// 保留当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.navigateTo({url: '/pages/list/list',})}}) -
点击渲染,然后点击 navigateTo 按钮,可以看到跳转到 /pages/list/list 页面的效果,如下:

-
页面左上角有一个返回按钮,点击该按钮可以返回上一页,如下:

-
接着把跳转 url 修改为 tabBar 路由,比如修改到 cate 分类页面,如下:
Page({navigateTo(){// 保留当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.navigateTo({url: '/pages/lcate/cate',})}}) -
这时候点击跳转按钮,可以发现无法跳转,因为 wx.navigateTo 无法跳转到 tabBar 页面;
-
- 演示 wx.redirectTo用法:
- 在 pages/cate/cate.js 中添加跳转逻辑,如下所示:
Page({redirectTo(){// 关闭(销毁)当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.redirectTo({url: '/pages/list/list',})} }) - 点击渲染,然后点击 redirectTo 按钮,可以看到跳转到 /pages/list/list 页面的效果,如下:

- 小程序跳转到 list 页面后,会把原页面销毁 ,可以看到当前页面左上角没有返回上一页箭头;
- 接着将跳转到 list 页面修改为跳转到 tabBar 的 cate 页面,如下:
Page({redirectTo(){// 关闭(销毁)当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.redirectTo({url: '/pages/cate/cate',})} }) - 这时候点击跳转按钮,可以发现无法跳转,因为 wx.redirectTo无法跳转到 tabBar 页面;

- 在 pages/cate/cate.js 中添加跳转逻辑,如下所示:
- 演示 wx.switchTab用法:
- 在 pages/cate.cate.js 中添加跳转到 cart tabBar 的代码,如下:
Page({switchTab(){// 跳转到 tabBar 页面,不能跳转到非 tabBar 页面,路径后面不能传递参数wx.switchTab({url: '/pages/cart/cart',})} }) - 点击渲染,然后点击 switchTab按钮,可以看到跳转到 /pages/cart/cart 页面的效果,如下:

- 注意 switchTab 不能切换到 tabBar 页面,这里我们设置跳转到非 tabBar 页面,如下:
Page({switchTab(){// 跳转到 tabBar 页面,不能跳转到非 tabBar 页面,路径后面不能传递参数wx.switchTab({url: '/pages/list/list',})} }) - 点击渲染,然后点击 switchTab 按钮,可以发现无法正常跳转到 list 页面;
- 在 pages/cate.cate.js 中添加跳转到 cart tabBar 的代码,如下:
- 演示 wx.reLaunch用法:
- 在 pages/cate/cate.js 中添加跳转到 list 页面的代码,如下:
Page({reLaunch(){// 关闭所有页面,跳转到应用中的某一个页面wx.reLaunch({url: '/pages/list/list',})} }) - 点击 reLaunch 跳转按钮,可以发现跳转到 list 页面,如下所示:

- 接着在 pages/cate/cate.js 中添加跳转到 cart tarBar 页面的代码,如下所示:
Page({reLaunch(){// 关闭所有页面,跳转到应用中的某一个页面wx.reLaunch({url: '/pages/cart/cart',})} }) - 点击渲染,然后点击 reLaunch 按钮,可以看到跳转到 cart 的 tarBar 页面,如下所示:

- 在 pages/cate/cate.js 中添加跳转到 list 页面的代码,如下:
- 演示 wx.navigateBack用法:
- 在 pages/list/list.wxml 中添加按钮样式,如下所示:
<button plain type="warn" bind:tap="navigateBack">navigateBack</button> - 在 pages/list/list.js 中添加跳转逻辑,如下所示:
Page({navigateBack(){// 关闭当前页面,返回上一页或者返回多级页面// 默认返回上一页wx.navigateBack({// 通过 delta 决定返回几级页面// 1 表示返回上一级页面,2 表示返回上二级页面delta: 1})} }) - 在 pages/cate/cate.js 中的 navigateTo 添加跳转到 list 页面的代码,如下:
navigateTo(){// 保留当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.navigateTo({url: '/pages/list/list',})} - 点击渲染,在 cate 页面点击 navigateTo 按钮,跳转到 list 页面,如下:

- 点击 list 页面的 navigateBack 的按钮,可以发现返回到 cate 页面,如下所示:

- 在 pages/list/list.wxml 中添加按钮样式,如下所示:
- 下面演示如何在路径中添加参数
-
在 navigateTo API 中演示,如下所示,在 pages/cate/cate.js 文件中添加如下代码:
Page({navigateTo(){// 保留当前页面,跳转到应用中其它页面,不能跳转到 tabBar 页面wx.navigateTo({url: '/pages/list/list?id=1&name=tom',})} }) -
点击渲染,然后调整左下角,使路径参数可见,如下:

-
如果 list 页面需要接收参数,需要在 pages/list/list.js 文件中使用 unLoad 钩子函数,onLoad 方法有一个形参 options,打印 options 即可打印路径参数,代码如下:
// pages/list/list.js Page({navigateBack(){// 关闭当前页面,返回上一页或者返回多级页面// 默认返回上一页wx.navigateBack({// 通过 delta 决定返回几级页面// 1 表示返回上一级页面,2 表示返回上二级页面delta: 1})},onLoad(options){console.log(options)} }) -
点击 cate 页面的 navigateTo 按钮进入到 list 页面,即可在 console 区域看到打印的信息,如下:

-
参考视频:尚硅谷微信小程序开发教程
相关文章:
小程序API —— 54 路由与通信 - 编程式导航
在小程序中实现页面的跳转,有两种方式: 声明式导航:navigator 组件编程式导航:使用小程序提供的 API 编程式导航 API 提供了五个常用的 API 方法: wx.navigateTo():保留当前页面,跳转到应用内…...
关于金融开发领域的一些专业知识总结
目录 1. 交易生命周期 1.1 证券交易所 1.1.1 交易前 1) 订单生成(Order Generation) 2) 订单管理(Order Management) 1.1.2 交易执行 3) 交易匹配(Trade Matching) 1.1.3 交易后 4) 交易确认&…...
使用 `pytest` 框架时,可以通过极限封装将 YAML 文件的读取、解析
在使用 pytest 框架时,可以通过极限封装将 YAML 文件的读取、解析和测试用例的通用逻辑封装成共享的方法或 fixture,从而减少重复代码。以下是详细的实现步骤和示例。 1. 封装 YAML 文件读取和解析 将 YAML 文件的读取和解析逻辑封装到一个工具函数中,供所有测试用例调用。…...
蓝桥杯练习day3:反转字符串
一、题意 写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s [“h”,“e”,“…...
DeepSeek-R1深度解读
deepseek提出了一种通过强化学习(RL)激励大语言模型(LLMs)推理能力的方法,个人认为最让人兴奋的点是:通过RL发现了一个叫“Aha Moment”的现象,这个时刻发生在模型的中间版本中。在这个阶段&…...
15-双链表-双链表基本操作
题目 来源 827. 双链表 - AcWing题库 思路 此题我只想说,千万千万别漏了头结点和尾结点,不然根本查不出来是哪里出了问题,因为传入的k会有问题;最左边插入,相当于是在头结点的右边插入(也就是0号节点的右…...
正则表达式详解(regular expression)
💡 正则表达式(Regular Expression, regex)知识点总结 💡 正则表达式是一种用于匹配字符串的模式,广泛用于搜索、替换、验证等操作。 📌 正则表达式的主要作用 1️⃣ 字符串匹配 🧐 检查一个…...
经典面试题:C/C++中static关键字的三大核心作用与实战应用
一、修饰局部变量:改变生命周期,保留跨调用状态 核心作用: 延长生命周期:将局部变量从栈区移至静态存储区(数据段或BSS段),生命周期与程序一致保留状态:变量在函数多次调用间保…...
笔记:代码随想录算法训练营day57:99.岛屿数量 深搜、岛屿数量 广搜、100.岛屿的最大面积
学习资料:代码随想录 注:文中含大模型生成内容 99. 岛屿数量 卡码网题目链接(ACM模式) 先看深搜方法:找到未标标记过的说明找到一片陆地的或者一片陆地的一个角落,dfs搜索是寻找相连接的陆地其余部分并…...
【小也的Java之旅系列】01 分布式、集群、微服务的区别
前言 做Java开发多年,一直以来都有想把Java做成一个系列的想法,最近整理自己的笔记发现有很多值得写的内容,但这些内容又往往杂乱不堪。CSDN上有很多高质量的Java博客,但大多不是从一个人成长的角度去写的。而我们——一个技术人…...
基于视觉的核桃分级与套膜装置研究(大纲)
基于视觉的核桃分级与套膜装置研究:从设计到实现的完整指南 (SolidWorks、OpenCV、STM32开发实践) 🌟 项目背景与目标 1.1 为什么选择视觉分级与套膜? 产业痛点: 中国核桃年产量全球第一,但…...
JimuReport与deepseek结合,颠覆现有BI模式
在数字化转型的浪潮中,企业对数据的依赖程度越来越高,如何高效地分析和利用数据成为关键。JimuReport凭借其强大的报表设计能力和灵活的数据处理功能,已经成为众多企业的首选工具。如今,它即将与DeepSeek深度结合,为企…...
大白话详细解读函数之柯里化
1. 函数柯里化是什么? 函数柯里化是一种将多参数函数转换成一系列单参数函数的技术。简单来说,就是把一个接收多个参数的函数,变成每次只接收一个参数,并返回一个新函数,直到所有参数都接收完毕,最后返回结…...
11、STL中的set使用方法
一、了解 set 是 C 标准模板库(STL)中提供的有序关联容器之一。基于红黑树(Red-Black Tree)实现,用于存储一组唯一的元素,并按照元素的值进行排序。 set的特性 唯一性 键是唯一的。无重复。 有序性 按升序…...
git 子模块的使用
1. 子模块的核心概念 独立性:子模块是一个独立的 Git 仓库,有自己的提交历史和分支。 指针机制:主仓库仅记录子模块的特定提交(而不是分支),确保代码版本可控。 适用场景:依赖第三方库、多项目…...
vsftpd服务权限配置
主配置文件:/etc/vsftpd/vsftpd.conf anonymous_enableYES #是否启用匿名用户 no_anon_passwordYES #匿名用户login时不询问口令 anon_upload_enableyes | no # 匿名用户对文件(非目录)上传权限。 anon_world_readable_onlyyes | …...
遥感数据获取、处理、分析到模型搭建全流程学习!DeepSeek、Python、OpenCV驱动空天地遥感数据分析
【扔进数据,直接出结果】在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专…...
操作系统——(管程、线程、进程通信)
目录 一、管程机制 (1)管程定义 (2)特点: 二、进程通信 (1)概念 (2)高级通信机制 三、线程 (1)概念 (2)与进程比较…...
Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍
https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/named-pipes-properties?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/client-protocols-named-pipes-properties-protocol-tab?viewsql-server-ver16 默认…...
Redis 本地安装
首先安装: https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-from-source/ 进入root目录 tar -xzvf redis-stable.tar.gz cd redis-stable make然后 install sudo make install最后可以直接启动 redis-server但是此时启…...
外卖订单如何教会我变量与数据类型?
目录 前言一、现实场景1.1 你点的每一碗,都是程序员的KPI1.2 关键数据角色扮演 二、技术映射三、知识点呈现3.1 变量——你的数字日记本3.2 数据类型——数值的「职业规划」3.3 运算符——数学老师的黑板擦 四、代码实现4.1 基础版:计算器の复仇4.2 进阶…...
HOW - 平时如何保持学习和成长?
目录 前言数字时代的系统性学习方法论一、场景驱动的实战学习:从工具赋能到知识沉淀二、结构化的系统学习:构建知识体系的方法论(一)精准学习策略(二)学习成效评估体系(三)专项研究 …...
Web开发-JS应用原生代码前端数据加密CryptoJS库jsencrypt库代码混淆
知识点: 1、安全开发-原生JS-数据加密&代码混淆 2、安全开发-原生JS-数据解密安全案例 一、演示案例-WEB开发-原生JS&第三方库-数据加密 前端技术JS实现: 1、非加密数据大致流程: 客户端发送->明文数据传输-服务端接受数据->…...
手动集成sqlite的方法
注意到sqlite有backup方法(https://www.sqlite.org/backup.html)。 也注意到android中sysroot下,没有sqlite3的库,也没有相关头文件。 如果要使用 sqlite 的backup,那么就需要手动集成sqlite代码到项目中。可以如下操…...
比特币牛市还在不在
在加密货币的风云世界里,比特币的一举一动始终牵动着投资者们的神经。近期比特币的涨幅动作,再次引发了市场对于牛市是否仍在延续的激烈讨论。 在深入探索比特币市场的过程中,获取全面且及时的资讯至关重要。您可以通过访问Techub News&#…...
Python、MATLAB和PPT完成数学建模竞赛中的地图绘制
参加数学建模比赛时,很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景,往往要求我们制作与地图相关的可视化内容。如下图,这是21年亚太赛的那道塞罕坝的题目,期间涉及到温度、降水和森林覆盖率…...
跨平台RTSP高性能实时播放器实现思路
跨平台RTSP高性能实时播放器实现思路 目标:局域网100ms以内超低延迟 一、引言 现有播放器(如VLC)在RTSP实时播放场景中面临高延迟(通常数秒)和资源占用大的问题。本文提出一种跨平台解决方案,通过网络层…...
编写一个简单的chrome截图扩展
文件结构: screenshot |-- background.js ---> service_worker运行的js |-- images ---> 图片 | |-- logo-128x128.png | |-- logo-16x16.png | |-- logo-32x32.png | -- logo-48x48.png -- manifest.json --->…...
吴恩达机器学习笔记复盘(六)梯度下降算法
简介 梯度下降(Gradient Descent)是一种常用的优化算法,广泛应用于机器学习、深度学习等领域,在这里是用于求J(w,b)局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是,一个人…...
【机器学习chp14 — 3】生成式模型—生成对抗网络GAN(超详细分析,易于理解,推导严谨,一文就够了)
目录 三、生成对抗网络 ( Generative Adversarial Networks,GAN ) 1、GAN的基本思想 (1)生成器与判别器的基本结构与演变 (2)“对抗”机制及名词由来 2、GAN训练的基本算法 (1)网络初始化与…...
