微信小程序使用路由传参和传对象的方法

news/2024/7/20 3:01:42 标签: 微信小程序, 小程序, 路由, 参数, 对象参数

近期在做小程序>微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。

路由传字符串参数

原始页面

传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件的url完成,另一种是使用wx.navigateTo()跳转。wxml代码如下:

<!--pages/tim/index/index.wxml-->
<view>Author:益添</view>
<view>
	<navigator url="/pages/tim/demo/demo?name=Tim&sex=男" hover-class="navigator-hover">navigator携带字符串参数</navigator>
</view>
<button bind:tap="tapStringParameter">传递字符串参数</button>

需要通过按钮的方法响应传递,则在js中,定义一个tapStringParameter方法,处理点击后的工作

  tapStringParameter(){
    console.log("tapStringParameter")
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男'
    })
  },

接收参数的页面

在对应的pages/tim/demo/demo页面,在onLoad方法中接收参数,代码和示例如下:

  onLoad(options) {
    console.log(options)
    console.log(options.name, options.sex)
  }

效果如下,分别点击navigator和按钮,都可以获取到对应的参数

路由传递对象

由于字符串传递的参数需要转换,且参数的长度有限(路由字符串具体长度笔者未看到说明,可能和http的get方法一样,在实际开发过程中遇到过超限无法完整传递的情况)。因此要传递对象,就需要使用wx.navigateTo()中的回调函数。

原始页面

接下来,在上述的wxml页面上,增加一个按钮

<!--pages/tim/index/index.wxml-->
<view>Author:益添</view>
<view>
	<navigator url="/pages/tim/demo/demo?name=Tim&sex=男" hover-class="navigator-hover">navigator携带字符串参数</navigator>
</view>
<button bind:tap="tapStringParameter">传递字符串参数</button>
<button bind:tap="tapObjectParameter">传递对象参数</button>

在js中,我们增加“tapObjectParameter”方法。在方法中创建一个对象,并在wx.navigateTo()的success回调中,添加一个事件,命名为“acceptDataFromOpenerPage”,将对象传入。在url中,我们还是可以通过字符串传递参数

// pages/tim/index/index.ts
Page({
  tapStringParameter(){
    console.log("tapStringParameter")
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男'
    })
  },
  tapObjectParameter(){
    console.log("tapObjectParameter")
    let person = {
      name: '益添',
      sex: '男'
    }
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男',
      success: function(res) {
        // 通过eventChannel向被打开页面传送数据
        res.eventChannel.emit('acceptDataFromOpenerPage', person)
      }
    })
  }
})

接收参数的页面

在onLoad函数中,使用this.getOpenerEventChannel()获取当前的事件频道,然后监听“acceptDataFromOpenerPage”事件,在回调中,即可获取传递过来的参数

// pages/tim/demo/demo.ts
Page({
  onLoad(options) {
    console.log(options)
    console.log(options.name, options.sex)
    const eventChannel = this.getOpenerEventChannel()
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function (data) {
      console.log("acceptDataFromOpenerPage")
      console.log(data)
      console.log(data.name, data.sex)
    })
  }
})

点击按钮,可以看到各页面传入的中的参数能正常输出。

参考链接:

导航 / navigator (qq.com)

路由 / wx.navigateTo (qq.com)


http://www.niftyadmin.cn/n/5070478.html

相关文章

【案例分享】配置设备作为PPPoE Client,实现接入Internet

【微|信|公|众|号&#xff1a;厦门微思网络】 【微思网络www.xmws.cn&#xff0c;成立于2002年&#xff0c;专业培训21年&#xff0c;思科、华为、红帽、ORACLE、VMware等厂商认证及考试&#xff0c;以及其他认证PMP、CISP、ITIL等】 组网需求 企业用户希望把一个站点上的多台…

数据统计分析功能在CRM软件系统中的作用

随着数字化概念持续走入大众视野&#xff0c;CRM客户管理系统被企业广泛认可。很多企业通过CRM进行数据分析&#xff0c;找出问题并逐一优化解决&#xff0c;提高业务能力和团队工作质量。下面来介绍CRM系统中数据统计分析的作用。 在数字信息时代&#xff0c;企业很多决策都要…

步进电机S曲线驱动模块

一、电路 带有CAN及485接收&#xff0c;三个光耦接口&#xff0c;TMC2660电机驱动芯片&#xff0c;stm32f103的主控芯片 二、协议 一般来说&#xff0c;板子之间的通信协议格式通常为&#xff1a; 内容 帧头 长度 类型1 类型2 Data 校验 帧尾 字节数 1 1 1 1 N 2 1 帧头为0xB…

Puppeteer基础知识(一)

Puppeteer基础知识&#xff08;一&#xff09; Puppeteer基础知识&#xff08;一&#xff09;一、简介二、其他一些自动化测试工具三、Puppeteer常用命令四、常见问题解决&#xff1a; 一、简介 Puppeteer 是一个强大而灵活的工具&#xff0c;可以用于网页爬虫、自动化测试、性…

睿趣科技:新手无货源怎么开抖音小店

抖音小店的开设对于许多商家来说是一个有吸引力的选择&#xff0c;尤其是对于那些喜欢短视频和社交媒体的年轻人。然而&#xff0c;对于没有货源的新手来说&#xff0c;这可能是一个令人头疼的问题。这篇文章将为你提供一些解决方案。 首先&#xff0c;你可以考虑从批发市场购买…

LeetCode算法心得——有序三元组中的最大值 II (简单的动规思想)

大家好&#xff0c;我是晴天学长&#xff0c;枚举&#xff0b;简单的动态规划思想&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .有序三元组中的最大值 II 有序三元组中的最大值 II 给你一个下标从 0 开始的整数数组 nums 。 请你从所有满足 …

香港ATA怎么办理

在香港办理ATA&#xff08;临时进口和出口货物的便利化制度&#xff09;相关手续需要按照以下步骤操作&#xff1a; 在香港加入世界海关组织&#xff08;World Customs Organization&#xff09;。 与香港海关建立联系&#xff0c;确认ATA证书可以承认的品类和使用条件。 申请…

cmake: Unable to find Python interpreter, required for builds and testing.

问题描述 当使用 cmake 编译文件时&#xff0c;出现错误&#xff1a; – Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE) CMake Error at CMakeLists.txt:376 (message): Unable to find Python interpreter, required for builds and testing. Please install P…