博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序开发技巧总结 (一)-- 数据传递和存储
阅读量:5338 次
发布时间:2019-06-15

本文共 2580 字,大约阅读时间需要 8 分钟。

结合自己在平时的开发中遇到的各种问题,和浏览各种问题的解决方案总结出一些自己在日常开发中常用的技巧和知点,希望各位不吝斧正。

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.页面间数据传递

页面间之间的数据传递一般是简单的,这种类型的数据的生命周期是一次性的,用完即删。

wx.navigatorTo({    url:'../index/index?param1=value1&param2=value2'})
//在index页面获取onLoad(options){    console.log(options.param1);//value1}

可以参照Http请求中的Get表单传参方式来写页面之间的传参。

如果需要传送的数据太多,可通过Map<key ,Storge>进行传递

wx.setStorge({    key:'xxx',    data:mydata})

传递参数只需要传递一个key,在其他界面通过这个key再次去获取本地缓存,对于这种类型的数据,建议使用完后即时的删除缓存。

wx.removeStorage({  key: 'xxx',  success(res) {    console.log(res)  }})

返回携带参数方法

wx.navigateBack({    })

共两种方式

1. 全局变量 和 Storage

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    })    //或者是通过获取缓存的方法进行赋值  }}

2. 页面栈

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();

开发联系Q 1025584691

转载于:https://www.cnblogs.com/masterchd/p/10901624.html

你可能感兴趣的文章
图标名称大写导致R&nbsp;cannot&amp;nb… 分类: A...
查看>>
Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。...
查看>>
SpringMVC 拦截器简单配置
查看>>
第一次作业小结
查看>>
erlang http post 发送数据请求
查看>>
Unresolved external CheckAutoResult
查看>>
[收藏转贴]struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招...
查看>>
tinkcmf视频上传大小限制
查看>>
《第1章:统计学习方法概论》
查看>>
JS定时器时间日期钟表
查看>>
partial(C# 参考)
查看>>
Supervisor介绍、安装及配置
查看>>
openshift 添加cron定时任务
查看>>
sublime text3在指定浏览器上本地服务器(localhost)运行文件(php)
查看>>
【ABAP系列】SAP ABAP基础-录制BDC的MODE定义解析
查看>>
C++编写DLL的方法
查看>>
第八周
查看>>
iOS-打电话、发短信、发邮件、打开浏览器
查看>>
[Swift]LeetCode646. 最长数对链 | Maximum Length of Pair Chain
查看>>
Echars 在界面上自适应问题
查看>>