微信小程序数据传递的综合指南

news2024/11/18 6:15:09

前言

数据传递是现代应用程序开发中的一个关键问题。在微信小程序中,传递数据的方式有很多种,每种方式都有其适用的场景和优势。在本文中,我将为大家介绍微信小程序中常用的数据传递方式,并提供一些实用的技巧和建议,帮助大家在开发微信小程序时更好地处理数据传递的需求。


方式一:URL 传递

可以通过 URLquery 参数传递参数。在小程序的页面跳转时,可以在 URL 中添加参数,然后在目标页面的 onLoad 函数中通过 options 参数获取传递的参数值。

示例代码: 在页面 A 中跳转到页面 B,并传递参数:

// 点击事件
onClick() {
    let id = '16434d47128409249818'
    let name = 'xiaohogn'
    wx.navigateTo({
        url: '../carDetails/carDetails?id= ' + id + '&name=' + name
    })
},

在页面 BonLoad 函数中获取参数:

onLoad(options) {
    console.log(options);
},
  • 使用场景:

    适用于页面之间的简单参数传递,例如列表页跳转到详情页时传递某个数据的 ID

  • 优点:

    简单易用,无需额外的配置和处理。

  • 缺点:

    参数暴露在 URL 中,可能存在安全风险,且传递的参数数量有限。

在这里插入图片描述


方式二:全局变量传递

可以通过设置全局变量来传递参数。在小程序中,可以使用 getApp() 方法获取小程序实例,然后在实例中设置和获取全局变量。

示例代码: 在页面 A 中设置全局变量:

// 点击事件
onClick() {
    getApp().globalVariable.userName = "admin";
    getApp().globalVariable.grade = 6;
    wx.navigateTo({
        url: '../carDetails/carDetails'
    })
},

在页面 B 中获取全局变量:

onLoad(options) {
    console.log(getApp().globalVariable);
},
  • 使用场景:

    适用于需要在多个页面之间共享数据的情况,例如用户登录状态、用户信息等。

  • 优点:

    方便在多个页面之间共享数据,无需频繁传递参数。

  • 缺点:

    全局变量可能被其他页面修改,需要注意数据的同步和安全性。

在这里插入图片描述


方式三:Storage 传递

可以使用小程序的 Storage API 来传递参数。可以使用 wx.setStorageSync() 方法设置参数值,然后在目标页面中使用 wx.getStorageSync() 方法获取参数值。

示例代码: 在页面 A 中设置参数:

// 点击事件
onClick() {
    let data = {
        id: '1',
        type: 2,
        title: "测试",
    }
    wx.navigateTo({
        url: '../carDetails/carDetails'
    })
    wx.setStorageSync('infos', data);
},

在页面 B 中获取参数:

onLoad() {
    console.log(wx.getStorageSync('infos'));
	// 从本地缓存中移除指定 key
    // wx.removeStorgae('infos')
},
  • 使用场景:

    适用于需要在页面之间传递较多数据的情况,例如表单数据、用户选择等。

  • 优点:

    可以传递较多的数据,不受 URL 长度限制。

  • 缺点:

    需要手动清除 Storage 中的数据,否则数据会一直存在,可能导致数据冗余和安全问题。

在这里插入图片描述


方式四:navigator 跳转传递

本质上来说其实是与添加点击事件跳转一样的,可根据自身需求选择。

示例代码: 在页面 A 中跳转到页面 B,并传递参数:

<navigator url="../carDetails/carDetails?id=123&name=xiaohong"><button>我是首页页面</button></navigator>

在页面 BonLoad 函数中获取参数:

onLoad(option) {
    console.log(option);
},

在这里插入图片描述


除了上述常见的传参方式,还有一些不常见但也可以用于传递数据的方法,例如:

方式五:WebSocket 传递

可以使用小程序的 WebSocket API 来建立 WebSocket 连接,并通过发送消息的方式传递数据。在目标页面中监听 WebSocket 的消息事件,接收传递的数据。

示例代码: 在页面 A 中建立 WebSocket 连接并发送消息:

const socket = new WebSocket('wss://example.com');
socket.onopen = function() {
  socket.send('Hello');
}

在页面 B 中监听 WebSocket 的消息事件:

socket.onmessage = function(event) {
  console.log(event.data) // 输出:Hello
}
  • 使用场景:

    适用于实时通信和传递大量数据的情况,例如聊天应用、实时数据展示等。

  • 优点:

    可以实现实时通信和传递大量数据。

  • 缺点:

    需要服务器端的支持,且相对复杂。


方式六:数据库传递

可以使用小程序的云开发功能,通过云数据库来传递数据。可以在页面 A 中将数据存储到云数据库中,然后在页面 B 中从云数据库中获取数据。

示例代码: 在页面 A 中存储数据到云数据库:

const db = wx.cloud.database();
db.collection('data').add({
  data: {
    id: 123,
    name: 'John'
  }
})

在页面 B 中从云数据库中获取数据:

const db = wx.cloud.database();
db.collection('data').get().then(res => {
  console.log(res.data[0].id) // 输出:123
  console.log(res.data[0].name) // 输出:John
})
  • 使用场景:

    适用于需要在多个小程序之间共享数据的情况,例如多个小程序之间的数据同步。

  • 优点:

    可以实现多个小程序之间的数据共享。

  • 缺点:

    需要云开发的支持,且相对复杂。

总结

以上就是微信小程序中数据传递的方法了,大家可以根据具体的使用场景和需求,选择合适的方式来传递数据。至于第五和第六这两种不常见的传参方式大家也可以根据具体的使用场景和需求选择合适的方式,因为它们可以满足一些特殊的数据传递需求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像分块及拼接

原图&#xff1a; 分块结果&#xff1a; 拼接结果&#xff1a; 代码&#xff1a; import numpy as np import cv2 as cv import matplotlib.pyplot as pltdef get_patch(img,patch_size):imgs []h,w,n img.shapenew_h, new_w patch_size, patch_sizecolint(w/patch_siz…

深度森林(deep-forest)安装

深度森林&#xff08;deep-forest&#xff09;安装 1、打开https://pypi.org/&#xff0c;搜索deep-forest&#xff0c;下载wheel文件 在下载好之后&#xff0c;打开文件下载的位置 首先对下载好的wheel文件进行改名&#xff0c;原名是&#xff1a; deep_forest-0.1.7-cp39-c…

符合 EN55022B 规格、LTM4613EY、LTM4613MPV直流µModule稳压器【RG500Q 5G Sub-6 GHz 模块】

一、LTM4613&#xff0c;符合 EN55022B 规格的 36VIN、15VOUT、8A、DC/DC Module 稳压器 &#xff08;简介&#xff09;LTM4613 是一款完整、超低噪声、8A 开关模式 DC/DC 电源。封装中内置了开关控制器、功率 FET、电感器和所有的支持元件。LTM4613 的工作输入电压范围为 5V 至…

springboot家政服务管理平台springboot29

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

【数据库审计】2023年数据库审计厂家汇总

我们大家都知道数据库审计的重要意义&#xff0c;不仅可以满足等保合规&#xff0c;还能进行风险告警&#xff0c;保障数据安全。那你知道目前市面上数据库审计厂家有哪些吗&#xff1f;这里小编就给大家汇总一下。 2023年数据库审计厂家汇总 1、行云管家 2、安恒信息 3、…

头戴式耳机什么牌子最好?头戴式耳机推荐性价比高

脖子上挎个头戴式作为随身装备&#xff0c;不仅给服装配饰添加了潮流感&#xff0c;还可以可以随时聆听音乐&#xff0c;随着广大消费者的生活水平不断提高&#xff0c;市面上的头戴式耳机越来越多。 选择头戴式耳机时无非就是听音质、看外观、舒适度等等&#xff0c;那么头戴…

c++视觉----方框滤波

方框滤波 cv::boxFilter()函数是OpenCV中用于应用方框滤波的函数。方框滤波是一种基本的平滑滤波方法&#xff0c;它使用一个均匀权重的矩形核来平均处理像素的值。 以下是cv::boxFilter()函数的基本用法&#xff1a; void cv::boxFilter(cv::InputArray src, // 输入图…

[引擎开发] 杂谈ue4中的Vulkan

接触Vulkan大概也有大半年&#xff0c;概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质&#xff0c;带有严重的主观认知&#xff0c;因此并没有那么严谨。 使用Vulkan会带来什么呢&#xff1f;简单来说就是对底层更好的控制。这意味着我们能够有更多的手段…

为什么要学C语言及C语言存在的意义

为什么要学C语言及C语言存在的意义 汇编生C&#xff0c;C生万物。linus说自己最喜欢的语言就是C语言&#xff0c;因为看到写出的代码就能想到对应的汇编码。一方面说明C语言足够简洁&#xff0c;没有像C中一样的复杂概念封装&#xff0c;另一方面也说明C语言足够的底层&#xf…

二、Nginx启停命令和升级更新

1.Nginx服务器启停命令 1.1Nginx服务的信号控制&#xff08;省略&#xff09; 1.2Nginx的命令行控制 nginx -? 或者 nginx -h显示帮助信息nginx -v打印版本号信息并退出nginx -V打印版本号信息和配置信息并退出nginx -t测试nginx的配置文件语法是否正确并退出nginx -T测试ng…

弱电工程师和单片机工程师未来那行更有前景?

弱电工程师和单片机工程师未来那行更有前景? 单片机行业不太懂&#xff0c;但是感觉上&#xff0c;单片机行业会更加专业一点&#xff0c;偏研发多一点。 下面稍微说下弱电工程师这个部分&#xff0c;从两个维度上去说&#xff0c;一个是做哪些事情&#xff0c;一个是做哪些系…

L1-035 情人节 c++解法

题目再现 以上是朋友圈中一奇葩贴&#xff1a;“2月14情人节了&#xff0c;我决定造福大家。第2个赞和第14个赞的&#xff0c;我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单&#xff0c;请你找出那两位要请客的倒霉蛋。 输入格式&#xff1a; 输入…

鉴源实验室 | AUTOSAR SecOC:保障汽车通信的安全

作者 | 沈平 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 在现代汽车行业中&#xff0c;随着电子控制单元&#xff08;ECUs&#xff09;的普及以及车与车之间通信的不断增加&#xff0c;确…

百度网盘加群图解教程

最近很多朋友说不知道怎么操作百度网盘群&#xff0c;这里弄一个图解教程&#xff0c;大家可以学一下~ 步骤1&#xff1a;获取群号 以这个群号为例子&#xff1a;628174363 步骤2&#xff1a;搜索百度盘群 步骤3&#xff1a;找文件库 加群之后&#xff0c;点击右上角的文件库…

TPU编程竞赛|算丰助力2023 CCF大数据与计算智能大赛!

目录 赛题介绍 赛题背景 赛题任务 赛程安排 初赛阶段 2023/09/25-11/27 决赛阶段 2023/11/28-12/17 评分机制 奖项设置 赛题奖项 赛事奖项 近日&#xff0c;第十一届2023CCF大数据与计算智能大赛&#xff08;简称CCF BDCI&#xff09;正式启动报名&#xff0c;本次大…

低功耗国产蓝牙芯片OM6621/HS6621- 蓝牙防丢器

在繁忙的生活中&#xff0c;我们往往会因为疏忽而丢失贵重物品&#xff0c;如钱包、钥匙、手机等&#xff0c;给生活带来不小的麻烦。然而&#xff0c;现代科技正为我们提供一种聪明的解决方案——蓝牙防丢器。这款小巧智能的装置不仅保护您的财物&#xff0c;还为您的生活带来…

好消息:用 vue3+layui 共同铸造我们新的项目

前言&#xff1a; layui这个框架不知道多少人还在关注着&#xff0c;记得第一次接触它是在18年&#xff0c;后来随着vue&#xff0c;react的盛行&#xff0c;jquerylayui的模式受到了特别大的冲击&#xff0c;后来作者都放弃维护他的官方网站&#xff0c;转而在github/gitee上做…

多测师肖sir_高级金牌讲师_python的安装002

一、python安装 1、python包&#xff08;我们目前学习的版本是3.7&#xff09; python-3.7.3 版本 2、Python下载的官网&#xff1a;https://www.python.org/downloads/ 最新包&#xff1a;3.12 3、下载好python安装包&#xff0c;在新建一个python文件件&#xff0c;我们要…

maven环境配置

1.从官网下载 Maven – Download Apache Maven 2.配置maven环境 把下载的maven放到一个固定的目录 配置环境变量 配置后执行mvn -version&#xff0c;如下提示就是成功了。 3.Idea配置maven 4.配置maven源&#xff0c;下载速度更快 <mirror> <id>nexu…

30个接口自动化测试面试题,看完的现在已经在办理入职了...

1. 什么是接口自动化测试&#xff1f; 答&#xff1a;接口自动化测试是指使用自动化工具对接口进行测试&#xff0c;验证接口的正确性、稳定性和性能等方面的指标。 2. 为什么要进行接口自动化测试&#xff1f; 答&#xff1a;接口自动化测试可以提高测试效率&#xff0c;减…