由于没找到相关的文档或者资料,就只有来这里发帖求助了。
问题是这么产生的,我需要实现一个换肤的功能,皮肤的配置是接口返回的,我会在生命周期:onLaunch的时候把参数存起来。
从考虑性能和方便性还有就是容错能力来说,我是把值放到app上面,还是放到本地缓存里面呢?
另外扩展一下这个问题:就是什么情况下用this.setData ? 什么时候用 wx.setStorage
代码实现:
var app=getApp();
Page({
data:{
SkinStyle:"normal" //这里其实可以不要
},
bgBtn:function(){
if (this.data.SkinStyle==="normal"){
app.globalData.skin = "dark"; //设置app()中皮肤的类型
this.setData({
SkinStyle: app.globalData.skin //设置SkinStyle的值
})
wx.setStorage({ //设置storage
key: 'skins',
data: app.globalData.skin,
})
}else{
app.globalData.skin="normal";
this.setData({
SkinStyle: "normal"
})
wx.setStorage({
key: 'skins',
data: app.globalData.skin,
})
}
}
})
问题是这么产生的,我需要实现一个换肤的功能,皮肤的配置是接口返回的,我需要在生命周期:onLaunch的时候把参数存起来。
app是内存,退出小程序就没了
storage是当前设备的存储
如果你要持久化用户选择的皮肤,那应该保存到app的同时也要保存到storage,下次小程序启动时直接从storage里读取用户皮肤设置(如果已经保存到后端接口的话就不用了)
目前没有接口做用户皮肤存接口的操作,存本地确实可以从资源请求这块来说有一定的优势,能节约服务器的一个接口调用。
什么时候用 this.setData ? 什么时候用 wx.setStorage this.setData:需要页面能够实时刷新,就是数据获取到页面立马就展现出来,如果不需要展示,需要留到后期运算,可以选择this.data.xxx=111; wx.setStorage 适合本地存储数据更新 比如默写用户设置 购物车等 这样下次打开就不用频繁从接口更新
--↓↓👍点赞是回答的动力哦
--↓↓👍点赞是回答的动力哦
app是一个变量,在内存中,存取速度快,程序关闭值就不存在了
缓存是一个文件,在硬盘中,存取速度慢,程序关闭后值还在
应该用哪个自己想想