在这里插入图片描述

  1. 新增地址流程
    • 下单页 → 地址列表页 (1次跳转)
    • 地址列表页 → 新增地址页 (1次跳转)
    • 保存地址 → 返回地址列表页 (1次返回,自动刷新列表)
  2. 选择地址流程
    • 地址列表页 → 选中地址 → 返回下单页 (1次返回)
  3. 更换地址
    • 下单页 → 地址列表页 (1次跳转)
    • 选中新地址 → 返回下单页 (1次返回)

这样就完全避免了需要两次返回才能回到下单页的情况,每次操作都是单次跳转或单次返回,符合用户直觉且不会产生冗余页面栈。然而使用wx.navigateBack本身不支持直接传递参数,但可以通过以下方法实现参数传递:

使用事件通道
  • 最符合小程序设计理念
  • 安全且不会污染全局命名空间
  • 支持复杂对象传递

下单页(order.js)

Page({data: {selectedAddress: null},onSelectAddress() {wx.navigateTo({url: '/pages/address/list',events: {// 定义接收地址更新的回调updateAddress: (address) => {console.log('收到新地址:', address)this.setData({ selectedAddress: address })}},success: (res) => {// 保存事件通道引用this.eventChannel = res.eventChannel}})},// 提交订单onSubmit() {if (!this.data.selectedAddress) {wx.showToast({ title: '请选择地址', icon: 'none' })return}// 提交逻辑...}
})

地址列表页(address/list.js)

Page({onLoad() {// 获取事件通道const eventChannel = this.getOpenerEventChannel()this.eventChannel = eventChannel},onSelectAddress(e) {const address = e.currentTarget.dataset.address// 通过事件通道发送数据if (this.eventChannel) {this.eventChannel.emit('updateAddress', address)}// 返回下单页wx.navigateBack()},// 新增地址后返回列表页onAddAddress() {wx.navigateTo({url: '/pages/address/add',events: {// 监听新增地址完成事件addressAdded: () => {this.loadAddresses() // 刷新地址列表}}})}
})

新增地址页(address/add.js)

Page({onSubmit() {// 保存地址逻辑...// 获取事件通道const eventChannel = this.getOpenerEventChannel()// 通知地址列表页刷新if (eventChannel) {eventChannel.emit('addressAdded')}// 返回地址列表页wx.navigateBack()}
})

使用事件通道是最推荐的方式,它不仅支持参数传递,还能保持页面间的解耦,是微信小程序页面间通信的最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89889.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89889.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89889.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM与JMM

为了更清晰地对比JVM和JMM,我们可以采用表格形式,从定义、功能、结构、与多线程关系等方面进行详细比较: 对比项JVM(Java Virtual Machine)JMM(Java Memory Model)定义一种虚构的计算机&#x…

【Docker基础】Docker数据卷管理:docker volume rm及其参数详解

目录 1 引言:Docker Volume 的生命周期管理 2 docker volume rm命令基础 2.1 命令作用 2.2 命令语法 3 参数深度解析 3.1 基础参数表 3.2 高级参数详解 3.2.1 --force(-f) 4 Volume删除前置条件 4.1 可删除状态判断 4.2 常见报错处…

嵌入式系统内核镜像相关(十)

文章目录 前言一、点亮多个led灯的基础实验以及其中的问题1.1 基础流程1.1.1 alinx教程的问题1.1.1.1 驱动程序中的亮/灭逻辑修改!1.1.1.1.1 逻辑错误的修改1.1.1.1.2 多灯亮/灭 1.1.1.2 驱动程序中引脚的问题以及与裸机开发的区别(重要)1.1.…

Word和Excel批量转PDF新方法,操作简单

PDF是一种跨平台的文档格式,无论在任何设备上查看,其排版、字体和图像都不会发生变化。这确保了文档的一致性,避免了由于不同软件版本或操作系统引起的显示问题。这款小巧的工具大小不到2MB,使用起来异常简单。只需要把需要转换的…

AI搜索 MCP最佳实践

背景 那些 LLM 不知道的事 尝试直接询问LLM“今天天气如何”时,会发现LLM无法回答——它既不知道“今天”是哪天,也无法获取地理位置信息。这揭示了LLM的局限:缺乏与外部工具和实时数据的交互能力。 为解决这一问题,MCP&#x…

JVM 简介与作用

🚀 JVM 简介与作用 📚 深入理解 Java 虚拟机的核心概念与重要作用 📖 目录 🤔 什么是 Java 虚拟机(JVM)🌐 JVM 在 Java 生态中的核心地位🔀 JVM 跨平台原理剖析📝 总结 …

✨ OpenAudio S1:影视级文本转语音与语音克隆Mac整合包

✨ OpenAudio S1:影视级文本转语音与语音克隆Mac整合包 🚀 OpenAudio S1 简介 OpenAudio S1 是由 Fish Audio 开发的 Fish Speech 系列的最新一代人工智能语音生成模型。该模型旨在大幅提升 AI 语音生成的技术水平,为用户提供更加自然、富有表…

spring加载外部properties文件属性时,读取到userName变量值和properties文件的值不一致

问题 使用spring DI注入外部properties文件属性时&#xff0c;读取到userName变量值和properties文件的值不一致。 bean属性注入&#xff1a; <!--加载配置文件--> <context:property-placeholder location"classpath:*.properties"/><bean id"…

黑马点评系列问题之基础篇p7 06初识redis无法在虚拟机查到图形化界面存进去的键

问题描述 在RESP中输入了一些键(name,age等这些) 但是在图形化界面里面输入的&#xff0c;在非图形化界面就找不到&#xff0c;在非图形化界面里输入的&#xff0c;在图形化界面里就可以查到。 原因分析及解决 经过多次实验&#xff0c;发现是因为在添加键名的时候&#xff0…

在VMware虚拟机中安装Windows 98时,Explorer提示“该程序执行了非法操作,即将关闭”的解决办法

在使用iso文件&#xff08;MD5: 0E496B5DCC519F550AAF0BCFBB4A11EA&#xff09;安装Windows98时&#xff0c;遇到此提示。 虽然原因未知&#xff0c;也无需深入探究&#xff0c;但是根据网友在 https://www.bilibili.com/opus/435866522585702782 中给出的相似经验&#xff…

在浏览器中使用SQLite(官方sqlite3.wasm)

有人可能会问&#xff1a;既然浏览器里又内置得IndexedDB&#xff0c;而且在IndexedDB里存数据&#xff0c;关了浏览器数据也不会丢&#xff0c;为什么还要在浏览器里用SQLite? 实际上&#xff0c;当 IndexedDB 内的数据量增多&#xff0c;数据和数据之间的关系变得复杂&…

数据结构(Java)--位运算

前言 本文为本小白学习数据结构的笔记&#xff0c;将以算法题为导向&#xff0c;向大家更清晰的介绍数据结构相关知识&#xff08;算法题都出自B站马士兵教育——左老师的课程&#xff0c;讲的很好&#xff0c;对于想入门刷题的人很有帮助&#xff09; 为什么要使用为位运算 位…

秋招Day14 - Redis - 应用

Redis如何实现异步消息队列&#xff1f; List配合LPUSH和RPOP。 另外就是用 Redis 的 Pub/Sub 来实现简单的消息广播和订阅。 但是这两种方式都是不可靠的&#xff0c;因为没有 ACK 机制所以不能保证订阅者一定能收到消息&#xff0c;也不支持消息持久化。 Redis如何实现延时…

因果语言模型、自回归语言模型、仅解码器语言模型都是同一类模型

因果语言模型、自回归语言模型、仅解码器语言模型都是同一类模型 flyfish 因果语言模型&#xff08;causal Language Models&#xff09; 自回归语言模型&#xff08;autoregressive language models&#xff09; 仅解码器语言模型&#xff08;decoder-only language models&am…

jvm架构原理剖析篇

简单题&#xff08;5道&#xff09; 考查内容&#xff1a;JVM运行时数据区域 题干&#xff1a;Java虚拟机栈的主要作用是&#xff1f; A. 存储对象实例 B. 存储方法调用和局部变量 C. 存储静态字段 D. 存储字节码指令 正确答案&#xff1a;B 解析&#xff1a;虚拟机栈用于存储方…

智链万物:人工智能驱动的产业智能化革命

当生成式AI在艺术与创意领域掀起风暴&#xff0c;大型语言模型重塑信息交互方式时&#xff0c;一场更为基础、影响更为深远的变革&#xff0c;正在全球实体经济的根基处悄然发生并加速推进——这就是产业智能化。它并非简单的“机器换人”&#xff0c;而是人工智能&#xff08;…

python中上下文管理器 与 try finally有什么区别

目录 主要区别代码对比何时使用哪种方式 主要区别 语法简洁性 上下文管理器使用 with 语句&#xff0c;语法更简洁优雅try-finally 需要显式编写异常处理代码&#xff0c;更冗长 代码复用性 上下文管理器可以封装为类或函数&#xff0c;便于在多处复用try-finally 通常需要在每…

人体属性识别+跌倒检测:儿童行为监测与安全升级

智慧幼儿园的AI智能检测盒应用实践 背景&#xff1a;传统园区管理的三大痛点 传统幼儿园管理长期面临三大核心挑战&#xff1a;一是安全监控依赖人工巡查&#xff0c;存在视觉盲区与响应延迟&#xff0c;如某连锁幼儿园曾因人工巡查疏漏&#xff0c;导致3起儿童跌倒事故未能及…

【ESP32-IDF笔记】09-UART配置和使用

环境配置 Visual Studio Code &#xff1a;版本1.98.2 ESP32&#xff1a;ESP32-S3 ESP-IDF&#xff1a;V5.4 支持型号&#xff1a;ESP32、ESP32-C2、ESP32-C3、ESP32-C5、ESP32-C6、ESP32-C61、ESP32-H2、ESP32-P4、 ESP32-S2、ESP32-S3 简介 通用异步接收器/发送器 (UART) …

在 .NET Core 和 React 中使用 WebSockets 和 SignalR 进行实时数据传输

对于需要即时更新和通知的应用程序来说&#xff0c;实时数据传输至关重要。在 .NET Core 中&#xff0c;WebSocket 和 SignalR 提供了强大的工具来实现客户端和服务器之间的实时通信。在本指南中&#xff0c;我们将探讨如何在 .NET Core 应用程序中使用 WebSocket 和 SignalR 实…