缓存的问题
老师你好,视频里收藏按钮的初始化操作(代码如下),完成后,第一次点击可以在测试台storage页面得到缓存,如0:false。但是退出点击其他页面,不会有新的缓存添加进来,是因为onload只在首次加载页面的时候触发对吗?
我的问题是,只触发一次,不应该只有第一个页面有缓存吗?为什么其他页面也能有缓存?
比如,我点击第一个页面的时候,可以得到0:false,而我点击第二个页面的时候,就不会再进行初始化操作,那这个页面应该没有缓存啊。但是进行点击操作,收藏按钮tap事件函数(代码如下)中的wx.getStorageSync("postsCollected")是可以得到1:false的,为什么第二个页面缓存中也是有值的?
//收藏按钮 缓存 初始化
var postsCollected=wx.getStorageSync("postsCollected");
if (postsCollected){
if (postsCollected[id]){
this.setData(collected = postsCollected[id]);
}
}else{
var postsCollected={};
postsCollected[id] = false;
wx.setStorageSync("postsCollected", postsCollected);
}
//收藏按钮tap事件函数
onCollectTap:function(){
var postsCollected = wx.getStorageSync("postsCollected");
var collected = postsCollected[this.data.currentPostId];
collected=!collected;
postsCollected[this.data.currentPostId]=collected;
//更新缓存数据
wx.setStorageSync("postsCollected", postsCollected);
//更新绑定数据
this.setData({collected});
}
正在回答
同学你好,因为存储数据中有值,所以不会初始化对象再赋值为false。可以看一下onload中判断

自己可以再理解下,祝学习愉快!
同学你好,想法是不对的,每重新进入一次页面(新页面),就会执行一次onload。因为跳转页面用的是
wx.navigateTo,执行的时候会执行onload

可以看一下官方文档

所以会缓存多个页面数据。
祝学习愉快!
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星