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

微信小程序怎么进行页面传参

微信小程序页面传参的方式有多种,每种方式都有其特定的使用场景和优势。以下是几种常见的页面传参方式,以及它们的具体使用方法和示例:

  1. URL参数传值
    • 原理:通过在跳转链接中附加参数,在目标页面的onLoad函数中获取参数。
    • 示例:
       

      javascript复制代码

      // 源页面跳转
      wx.navigateTo({
      url: '/pages/targetPage/targetPage?name=John&age=30'
      })
      // 目标页面接收参数
      Page({
      onLoad: function(options) {
      console.log(options.name); // 输出: John
      console.log(options.age); // 输出: 30
      }
      })
    • 特点:简单直接,适用于页面间简单的数据传递。
  2. 全局变量
    • 原理:在app.js文件中定义全局变量,通过getApp().globalData在源页面设置和目标页面获取变量的值。
    • 示例:
       

      javascript复制代码

      // app.js
      App({
      globalData: {
      userInfo: null
      }
      })
      // 源页面设置全局变量
      const app = getApp();
      app.globalData.userInfo = { name: 'John', age: 30 };
      // 目标页面获取全局变量
      const app = getApp();
      console.log(app.globalData.userInfo); // 输出: { name: 'John', age: 30 }
    • 特点:适用于在整个应用中共享数据。
  3. 缓存存储
    • 原理:使用wx.setStorageSync()在源页面设置存储的值,目标页面通过wx.getStorageSync()获取值。
    • 示例:
       

      javascript复制代码

      // 源页面设置缓存
      wx.setStorageSync('userInfo', { name: 'John', age: 30 });
      // 目标页面获取缓存
      let userInfo = wx.getStorageSync('userInfo');
      console.log(userInfo); // 输出: { name: 'John', age: 30 }
    • 特点:数据持久化存储,适用于跨页面、跨会话的数据传递。
  4. 路由传参
    • 原理:使用wx.navigateTo()传递参数,目标页面通过options参数获取传递的值。
    • 示例:与URL参数传值类似,但通常用于通过编程式导航传递参数。
  5. 事件触发传参
    • 原理:通过事件绑定,在源页面触发事件传递需要的参数,目标页面通过事件对象获取传递的值。
    • 示例:通常在自定义组件间使用,通过触发自定义事件传递数据。
  6. 组件传参
    • 原理:通过自定义组件的properties属性进行父子组件间的数据传递。
    • 示例:在自定义组件的properties中定义需要传递的属性,然后在父组件中设置该属性的值。
  7. 使用通信通道(wx.navigateTo的特有功能)
    • 原理:通过wx.navigateTo打开的页面间可以通过wx.getCurrentPages()获取页面栈,并使用页面栈中的页面实例进行通信。
    • 示例:这通常用于实现页面间的复杂交互和数据传递。

总结
微信小程序页面传参的方式多样,开发者可以根据实际需求选择合适的方式。简单直接的参数传递可以使用URL参数或路由传参;需要跨页面或持久化存储的数据可以使用全局变量或缓存存储;自定义组件间的数据传递可以使用组件传参;对于复杂的页面间交互,可以使用通信通道或其他高级功能。

相关文章:

  • 大学数字媒体艺术设计网页设计试题及答案,分享几个实用搜题和学习工具 #媒体#职场发展
  • 12寸晶圆厂建设概述
  • Javascript全解(基础篇)
  • C语言详解(动态内存管理)2
  • Nvidia Jetson/Orin/算能 +FPGA+AI大算力边缘计算盒子:潍柴雷沃智慧农业无人驾驶
  • idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法
  • go语言实战--基于Vue3+gin框架的实战Cetide网项目(讲解开发过程中的各种踩坑)
  • Unity学习要点
  • 【线性代数】第一章 概率论的基本概念
  • 关于使用南墙waf防护halo网站主页请求404报错的解决方案
  • 如何把linux安装到单片机中
  • git 空仓库笔记
  • 赚钱而已,你又不是宠物,干嘛让所有人都喜欢你?
  • 数据结构之ArrayList与顺序表(下)
  • Python在股票交易分析中的应用:布林带与K线图的实战回测
  • 分享一款快速APP功能测试工具
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 30天自制操作系统-2
  • android图片蒙层
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • docker python 配置
  • JS+CSS实现数字滚动
  • ng6--错误信息小结(持续更新)
  • NSTimer学习笔记
  • pdf文件如何在线转换为jpg图片
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • React Transition Group -- Transition 组件
  • Redis 懒删除(lazy free)简史
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vagrant 添加本地 box 安装 laravel homestead
  • 机器学习学习笔记一
  • 力扣(LeetCode)22
  • 巧用 TypeScript (一)
  • 实现菜单下拉伸展折叠效果demo
  • 使用putty远程连接linux
  • 学习使用ExpressJS 4.0中的新Router
  • 云大使推广中的常见热门问题
  • 《码出高效》学习笔记与书中错误记录
  • 2017年360最后一道编程题
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​ArcGIS Pro 如何批量删除字段
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​ubuntu下安装kvm虚拟机
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​虚拟化系列介绍(十)
  • #laravel 通过手动安装依赖PHPExcel#
  • (3) cmake编译多个cpp文件
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)C#调用WebService 基础
  • (转)机器学习的数学基础(1)--Dirichlet分布