缓存的问题

缓存的问题

老师你好,视频里收藏按钮的初始化操作(代码如下),完成后,第一次点击可以在测试台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});

}

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,因为存储数据中有值,所以不会初始化对象再赋值为false。可以看一下onload中判断

http://img1.sycdn.imooc.com//climg/5e7dd01e0992a1e706810469.jpg


自己可以再理解下,祝学习愉快!

好帮手慕星星 2020-03-27 15:45:02

同学你好,想法是不对的,每重新进入一次页面(新页面),就会执行一次onload。因为跳转页面用的是

wx.navigateTo,执行的时候会执行onload

http://img1.sycdn.imooc.com//climg/5e7dae80095cc8eb07530421.jpg

可以看一下官方文档

https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html#%E8%B7%AF%E7%94%B1%E6%96%B9%E5%BC%8F


http://img1.sycdn.imooc.com//climg/5e7daec5091135ce13900525.jpg

所以会缓存多个页面数据。

祝学习愉快!

  • 提问者 花生香又脆 #1
    如果每次都执行onload,为什么第二次页面点击的时候不会出现缓存1:false?
    2020-03-27 15:48:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师