微信小程序开发如何实现自动保存(微信小程序开发实用技巧之数据传递和存储)
微信小程序开发如何实现自动保存
微信小程序开发实用技巧之数据传递和存储结合自己在平时的开发中遇到的各种问题,和浏览各种问题的解决方案总结出一些自己在日常开发中常用的技巧和知点,希望各位不吝斧正。
1.短生命周期数据存储
以小程序启动到彻底关闭为周期的的数据建议存储在app.js文件夹中,引用app.js:
const app =getApp();
假设Value是在小程序本次生命周期中经常使用到的一个数据,比如说请求API的Token,动态的令牌等。那么就可以把这个值赋值到全局变量中去。实际上,并不是只有app.js中的globalData是全局变量,可以自己定义数据集。
App({ eduOS:{ token:'' }, ... })
对于app.js里面的token进行赋值操作很简单,只要页面引用了app.js
app.eduOS.token = Value;
这个数据在小程序的本次启动到彻底关闭后台的周期中就是长期存在的了,还可以根据需要进行修改,Value可以是对象。
2.长生命周期或者隐私数据存储
这种数据的显著特点是在小程序关闭再次重启后依然存在,或者涉及到用户的隐私信息但是需要复用,这种时候可以用本地缓存来解决这种问题。
本地缓存的生命周期: 小程序被开始使用 -----> 小程序被彻底从使用列表中移除。
小程序设置缓存的方式:
wx.setStorage({ key: 'educookie', data: { xh: that.data.xh, pwd: that.data.pwd } })
小程序获取缓存的方式:
var that = this; wx.getStorage({ key: 'educookie', success: function(res) { that.setData({xh:res.data.xh,pwd:res.data.pwd}); }, })
比如保存用户的登陆态信息,但是不能保存用户的隐私数据,就可以采用这种方式。
或者是一个非时效性的数据,可以通过这种方式进行存储。
3.动态信息或配置信息存储
保存用户的配置信息,在更换手机时能迅速完成配置同步。
商家小程序推荐商品修改,或者是内容修正,或者是增加活动,不可能每次都要重写然后再次让小程序进行审核。
对此,可以在后端服务器中保存这个信息。
以一个小程序的轮播广告牌为例:
{ ad1:'imgurl1', ad2:'imgurl2', ad3:'imgurl3' }
把这个数据存放在后台服务器,每一次刷新该页面都请求一次后台数据,对内容进行修改。
wx.request({ url:'XXX', data:{}, success(res){ that.setData({ adList:res.data }) } })
类似这种方式,完成对一些数据的动态控制或者是云同步。
4.页面间数据传递
1.url参数化
页面间之间的数据传递一般是简单的,这种类型的数据的生命周期是一次性的,用完即删。
wx.navigatorTo({ url:'../index/index?param1=value1¶m2=value2' })
//在index页面获取 onLoad(options){ console.log(options.param1);//value1 }
可以参照Http请求中的Get表单传参方式来写页面之间的传参。
2.storge形式传递
如果需要传送的数据太多,可通过Map<key ,Storge>进行传递,具体内容参考官方文档。
wx.setStorge({ key:'xxx', data:mydata }) //获取 wx.getStorgeSync('')
传递参数只需要传递一个key,在其他界面通过这个key再次去获取本地缓存,对于这种类型的数据,建议使用完后即时的删除缓存。
wx.removeStorage({ key: 'xxx', success(res) { console.log(res) } })
3.使用全局变量作为中介
const app = getApp(); page({ app.globalData.isBackvalue = ture;//确定是返回的值 app.globalData.tmpData = value;//你要传递的值,也可以设置缓存 })
在返回的页面获取
const app = getApp(); ... onShow(){ if(app.globalData.isBackValue){ this.setData({ XXX:app.globalData.tmpData }) //或者是通过获取缓存的方法进行赋值 } }
4.页面栈
该方法可以对所有入栈的页面进行赋值,有科班的同学可以理解为对树的dfs遍历入栈/出栈,栈内页面均可以进行数据传递。
var allpages = getCurrentPages();//获取全部页面数据 //栈的下标从 0 开始,进入页面第一个加载的页面数据是 allpages[0],当前页面是allpages[allpages.length - 1], 上一个页面是allpages[allpages.length - 2] var prepagedata = allpages[allpages.length - 2].data;//获取上一页面的数据。 var prepage = allpages[allpages.length - 2];//获取上一页面,包括数据和方法 //设置数据方法 prepage.setData({ XXX:value //XXX 是上个页面data中的参数,value是要设置的值 }) //调用函数方法,prepage中必须定义callfunction函数才可以调用 prepage.callfunction();
5.通信管道 EventChannel
Tips(如何理解通信管道):可以把该管道当成url或storge传递信息形式的一种,不过是被封装为Object形式了
A页面传递
wx.navigateTo({ url: 'B页面', success:res=>{ res.eventChannel.emit('channeldata', {name:'kindear'}) } })
B页面接收
onLoad: function (options) { let eventChannel = this.getOpenerEventChannel(); eventChannel.on('channeldata', data => { console.log(data) //打印成功 {name:'kindear'} }) }
总结
到此这篇关于微信小程序开发实用技巧之数据传递和存储的文章就介绍到这了,更多相关微信小程序数据传递和存储内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- 微信小程序引用模板的函数(微信小程序页面与组件之间信息传递与函数调用)
- 微信小程序做计算器(微信小程序实现计算器小功能)
- 怎么编写计算小程序(微信小程序实现简易计算器)
- 微信小程序双人游戏横屏(微信小程序实现拼图游戏)
- 微信小程序数学公式(微信小程序计算器实例详解)
- 微信小程序通知验证签名方法(微信小程序实现电子签名)
- 微信小程序单选框组件(微信小程序picker多列选择器mode = multiSelector)
- 微信小程序ui聊天窗口(微信小程序实现简单聊天室)
- 微信小程序怎么绕过人脸的(详解微信小程序官方人脸核身认证)
- php开发微信小程序后台步骤流程(基于PHP实现微信小程序客服消息功能)
- 微信小程序日期选择器有星期天(微信小程序 滚动选择器时间日期详解及实例代码)
- 微信小程序简易计算器制作(微信小程序实现简单计算器功能)
- 微信小程序js 抽奖概率(小程序实现筛子抽奖)
- 微信小程序左右翻页效果(微信小程序实现九宫格效果)
- 微信小程序开发如何实现自动保存(微信小程序开发实用技巧之数据传递和存储)
- 微信小程序scrollview 截图(微信小程序scroll-view不能左右滑动问题的解决方法)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
热门推荐
- appui代码(AmazeUI 图标的示例代码)
- hive数值转字符串(hive中将string数据转为bigint的操作)
- vue组件开发步骤(解析如何自动化生成vue组件文档)
- 用docker搭建在线开发平台(docker部署蜗牛影院系统详细流程分析)
- 程序员如何快速适应新工作
- qos实现限速(apche 多端口配置及网站指向非apche默认的网站文件夹设置方法)
- python本地ocr库(详解Python安装tesserocr遇到的各种问题及解决办法)
- python入门知识点总结(深入解析Python小白学习操作列表)
- apache用户认证配置(apache开启.htaccess及.htaccess的使用方法)
- VPS/云服务器使用3389端口远程连接管理图文教程(Windows)(VPS/云服务器使用3389端口远程连接管理图文教程Windows)