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

这篇具有很好参考价值的文章主要介绍了微信小程序数据传递的综合指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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


方式一: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 中,可能存在安全风险,且传递的参数数量有限。

微信小程序url参数传递,小程序,前端,微信小程序


方式二:全局变量传递

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

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

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

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

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

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

  • 优点:

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

  • 缺点:

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

微信小程序url参数传递,小程序,前端,微信小程序


方式三: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.removeStorage({
  key: 'key',
  success (res) {
    console.log(res)
  },
  fail: function(res) {
    console.log(res);
  }
})

批量删除 key

// 获取当前存储的所有键名
const storageInfo = wx.getStorageInfoSync();
const keys = storageInfo.keys;
// 遍历键名,匹配以 "Img" 结尾的键名进行删除
keys.forEach(key => {
    if (key.endsWith("Img")) {
        wx.removeStorage({
            key: key,
        });
    }
});
  • 使用场景:

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

  • 优点:

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

  • 缺点:

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

微信小程序url参数传递,小程序,前端,微信小程序

wx.setStorageSyncwx.setStorage 的区别?

  • 同步和异步: wx.setStorageSync 是一个同步方法,它会阻塞后续代码的执行,直到数据存储完成。而 wx.setStorage 是一个异步方法,它会立即返回并在后台进行数据存储,不会阻塞后续代码的执行;
  • 回调: wx.setStorage 方法接受一个回调函数作为参数,用于在数据存储完成后执行相应的操作。而wx.setStorageSync 没有回调函数,您可以直接在方法调用后继续处理后续代码;
  • 数据大小限制: wx.setStorageSync 可以存储的数据大小限制为 10MB,而 wx.setStorage 可以存储的数据大小限制为 1MB

综上所述,如果你需要在数据存储完成后执行一些操作,或者需要异步处理数据存储,您可以使用 wx.setStorage 方法。如果你希望在数据存储期间阻塞后续代码的执行,或者不需要处理存储完成后的操作,您可以使用 wx.setStorageSync 方法。

  • setStorage 存储

    wx.setStorage({
      key:"key",
      data:"value"
    })
    
  • setStorage 获取

    wx.getStorage('key')
    

方式四:navigator 跳转传递

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

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

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

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

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

微信小程序url参数传递,小程序,前端,微信小程序


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

方式五: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
})
  • 使用场景:

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

  • 优点:

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

  • 缺点:

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

总结

以上就是微信小程序中数据传递的方法了,大家可以根据具体的使用场景和需求,选择合适的方式来传递数据。至于第五和第六这两种不常见的传参方式大家也可以根据具体的使用场景和需求选择合适的方式,因为它们可以满足一些特殊的数据传递需求。文章来源地址https://www.toymoban.com/news/detail-755410.html

到了这里,关于微信小程序数据传递的综合指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序点击事件(bindtap)传递参数

    小程序在组件上绑定事件后,传递参数的方式不同于前端开发其他场景中直接加参数的方式,小程序在参数的传递时,采用事件对象的自定义属性的方式,具体实现如下: wxml: view bindtap=\\\"goTo\\\" data-index =\\\"{{item.index}}\\\"点击事件传参/view js中: goTo: function(e){     // 传递的参数    

    2024年02月12日
    浏览(45)
  • uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数

    本文是uniapp打包成安卓App。 一、注意事项 1、用到了分享功能,在打包App时,需要配置manifest.json:App 模块配置-Share。按照提示填写微信分享的信息,appid的获取参考我的另一篇文章:uniapp项目 App端实现微信登录、QQ登录 2、因为涉及到第三方 SDK 的配置,需要打包自定义基座

    2024年02月09日
    浏览(38)
  • 微信小程序路由以及跳转页面传递参数

    路由 在app.json的pages里面写 \\\"pages/页面/页面\\\" 直接保存pages直接生成非常方便  跳转页面 wx.navigateTo() 保留当前页面,跳转到应用内的某个非tabBar页面。 text bindtap=\\\"daka\\\"点击/text 会保留返回箭头 底部导航跳转在app.json写入即可 传参以及接收参数 1、本地存储 使用方法:和js差不

    2024年02月11日
    浏览(42)
  • 微信小程序 父组件调用子组件事件和传递参数

    一、使用场景 当每个页面都调用统一的组件时,传递的参数和方法都不尽相同,我们应该怎么样子传递给我们的子组件,让子组件获取相应的值或方法进行计算执行。 二、实现方式 1、父组件调用子组件的方法 2、父组件传递参数给子组件

    2024年02月11日
    浏览(45)
  • 微信小程序页面跳转时URL获取不到参数

    原因: 在跳转的url参数中添加了包含特殊字符?的情况下 ,会出现参数丢失的情况 1.最近在小程序开发过程中,发现之前可用的某个功能字段展示为了undefined,后来查看参数发现 页面跳转时参数丢失了 导致的 此时获取到的参数都是正常的,在上线一段时间后,其它同学在 图

    2024年02月11日
    浏览(53)
  • 微信小程序与内嵌h5页面之间的参数传递

    小程序是采用vue+taroui技术栈 h5页面 所在文件:h5.vue 小程序页面:wx.vue,这里我用的是taro获取当前页面栈,大家可以用wx 这里的this.routerParams==={params:1} 小程序页面:wx.vue,首先向内嵌h5的webview所在页面跳转并携带所传参数。 webview页面—/pages/processLink/index。index.vue,由该页面

    2024年02月15日
    浏览(58)
  • 微信小程序如何实现页面传参和页面传递多个参数

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 下面时多个参数页面传参的方式   通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:

    2024年02月11日
    浏览(60)
  • uni-app 返回上一个页面并传递参数(微信小程序)

    方法一 问题: 会记住每次返回. 并在下次获取参数时把所有的返回监听进行 全部返回 ( 不确定别人使用时是否会出现此问题 ) 打印示例结果如下: 打印说明: 获取用户信息1: 为每次进入第二个页面 (onload) 请求的数据 监听到事件来自返回的参数: 为第一个页面监听获取的数据 方

    2024年02月09日
    浏览(58)
  • 微信小程序post传递参数为formData格式,一般是在上传图片时需要的

    wx.uploadFile传参的格式本身就是formData格式的,参照官网就可以 如果是wx.request的需要formData格式,如下图data的格式

    2024年02月13日
    浏览(39)
  • 【面试必会,微信小程序的页面跳转和参数传递 ,程序员必会知识

    index.wxml: 在index.wxml页面添加一个元素,在元素里面使用属性url就可以 运行: 跳转的数据传递 以wx.navigateTo为例: 上面讲述,wx.navigateTo传入的url是跳转的页面(使用相对路径) wx.navigateTo({ url:“pages/home/home” }); 那么参数传递至下一页面,则只需要在路径后面,添加?问号,?

    2024年04月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包