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

小程序页面传值的多种方式

开发小程序,总是避免不了页面和页面之间数据共享,实现方法有很多种,以下就讲解一下小程序页面传值,需要的朋友可以参考下。

1 使用wx.navigateTo()传值

这种传值方式有两种,

  • url后面拼接传值:需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 'path?key=value&key2=value2'
  • events页面间通信接口:用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。

1.url后面拼接传值

wx.navigateTo({
  url: 'test?id=1',
})

 test页面接收数据

Page({
  onLoad: function(option){
    console.log(option.query)
  }
})

2.events页面间通信接口

wx.navigateTo({
  url: 'test',
  events: {},
  success: function (res) {
    res.eventChannel.emit('goTest', { data: {id:1,content:'hello word'} })
  }
})

 test页面接收数据

Page({
  onShow: function () {
    let that = this
    const eventChannel = that.getOpenerEventChannel()
    eventChannel.on('goTest', function (data) {
      console.log(data)
    })
  },
})

 3,数据缓存

利用微信提供的wx.setStorage()wx.setStorageSync()wx.getStorage()wx.getStorageSync()等API

当前页传数据,为确保数据已经进入缓存,最好用同步

wx.setStorageSync('data', {data:"数据"})

目标页,在需要用的地方获取

let data= wx.getStorageSync('data')

 4,页面栈传值

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

let pages = getCurrentPages();
console.log(pages)

 查看log

需要修改数据的页面 

currPage = pages[pages.length - 1]
currPage.setData({
  data:'hello word'
})

 

注意:

  • 不要尝试修改页面栈,会导致路由以及页面状态错误。
  • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

5,app.js保存全局属性

app.js配置全局属性

globalData: {
  userInfo: null
}

 需要使用的页面

const app = getApp()
let userInfo = app.globalData.userInfo

 需要改变app.js的值

const app = getApp()
app.globalData.userInfo= "hello word"

 

相关文章:

  • SQL语言
  • 力扣hot100_技巧_python版本
  • Multisim使用说明详尽版--(2025最新版)
  • 高效爬虫:一文掌握 Crawlee 的详细使用(web高效抓取和浏览器自动化库)
  • CS5346 - Interactivity in Visualization 可视化中的交互
  • Java 架构设计:从单体架构到微服务的转型之路
  • 大语言模型深度思考与交互增强
  • 策略模式随笔~
  • 适合单片机裸机环境的运行的软件定时器框架
  • Linux 下 Module 工具的介绍与使用
  • 深入解读:2024 可信数据空间建设及应用参考指南【附全文阅读】
  • Go 语言中的局部变量是分配在栈区还是堆区
  • 数据结构-限定性线性表 - 栈与队列
  • 在Mac上离线安装k3s
  • HarmonyOS:页面滚动时标题悬浮、背景渐变
  • 【微服务管理】深入理解 Gateway 网关:原理与实现
  • fbx/obj/glb/gltf/b3dm等通用格式批量转换成osgb
  • STL之priority_queue的用法与实现
  • 第一阶段补充知识
  • 【信息系统项目管理师】高分论文:论信息系统项目的范围管理(投资信息化全流程管理项目)
  • 农行一季度净利润719亿元增2.2%,不良率微降至1.28%
  • 中国农业国际交流协会会长王守聪失联已逾半年,协会启动罢免
  • 安徽省公安厅原副厅长刘海石主动投案,正接受审查调查
  • 葡萄牙总理:未来几小时内将全面恢复供电
  • 杭州一季度GDP为5715亿元,同比增长5.2%
  • 普京发表声明感谢协助俄军收复库尔斯克州的朝鲜军人