微信小程序> 微信小程序实现收藏功能

微信小程序实现收藏功能

浏览量:525 时间: 来源:weixin_43479282

我是个小菜鸟。。。。最近在学习一些微信小程序的知识,昨天写一个简单的收藏功能的时候遇到一些小错误,卡了很久。。。。在网上找答案的时候也找到很多实现的代码,但是我测试的时候还是会报错,后来终于发现了症结所在…555555555
这里贴一下我改之后的代码,如果有人有需要的话可以看看,因为我自己昨天真的找的很绝望…(也可能已经有大佬发过了,只是我没找到2333333)

修改之前的(昨天在网上找的示例代码):

  // 在第一次点进detail界面(所有文章记录均为未读时,postsCollected为空)时,不会报错;  // 但是当读过任意一篇文章后,再去点击没读过的文章,就会报错,除非这时就点击收藏按钮(点一次以上都可以),之后再点进来这篇文章才不会报错;如果不收藏,就会一直报错 var postsCollected = wx.getStorageSync('posts_Collected')    if (postsCollected) {      var postCollected = postsCollected[postId]      this.setData({        collected: postCollected      })    }    else {      var postsCollected = {}      postsCollected[postId] = false;      wx.setStorageSync('posts_Collected', postsCollected);    }  },  onCollectTap: function (event) {    var postsCollected = wx.getStorageSync('posts_Collected');    var postCollected = postsCollected[this.data.currentPostId];    //收藏变成未收藏,未收藏变成收藏    postCollected = !postCollected;    postsCollected[this.data.currentPostId] = postCollected;    //更新文章是否收藏的缓存值    wx.setStorageSync('posts_Collected', postsCollected);    //更新数据绑定变量,从而实现切换图片    this.setData({      collected: postCollected    })  }

修改之后的:

var postsCollected = wx.getStorageSync('posts_collected');    // if里面写postsCollected的话,会报错;    // 因为如果序号为0的文章读过了,而序号为1的文章没读过,那么postsCollected还是为真,    // 但是此时点击序号为1的文章,那么postsCollected[1]为空,赋值给postCollected,postCollected也为空;    // 则会说this.setData里面的collected没有定义    if (postsCollected[postId]) {      var postCollected = postsCollected[postId];      this.setData({        collected: postCollected      })    }     else if (postsCollected && !postsCollected[postId]){      postsCollected[postId] = false;      console.log(postsCollected[postId]);      wx.setStorageSync('posts_collected', postsCollected);      var postCollected = postsCollected[postId];      this.setData({        collected: postCollected      })    }    else {      var postsCollected = {};      postsCollected[postId] = false;      wx.setStorageSync('posts_collected', postsCollected);      var postCollected = postsCollected[postId];      this.setData({        collected: postCollected      })    }  },  onCollectTap: function(event) {    var postsCollected = wx.getStorageSync('posts_collected');    var postCollected = postsCollected[this.data.currentPostId];    postCollected = !postCollected;    postsCollected[this.data.currentPostId] = postCollected;    wx.setStorageSync('posts_collected', postsCollected);    this.setData({      collected: postCollected    })  }

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎