请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

清空缓存,收藏报错

缓存被清除后,收藏按钮就失效了。if也使用了
let collected=ydCollected[this.data._yid]
if(collected === undefined){
collected = false
}链接描述

正在回答 回答被采纳积分+3

1回答

这是因为清空缓存后,缓存里并不存在posts_collected。所以在onLoad里面首次获取posts_collected时,其实返回的是一个空的字符,并不是一个对象。所以我们要在onLoad里面首次获取posts_collected时判断一下,如果不存在那就设置posts_collected初始值为{},这样就不会报错了。

onLoad: function (options) {

    const postData = postList[options.pid]

    this.data._pid = options.pid

    const postsCollected = wx.getStorageSync('posts_collected') || {}

    this.data._postsCollected = postsCollected

    let collected = postsCollected[this.data._pid]

    if (collected === undefined) {

      //如果是undefined,则说明文章从来没有被收藏过

      collected = false

    }

    this.setData({

      postData,

      collected

    })

  }


14 回复 有任何疑惑可以回复我~
  • joe2077 #1
    简洁实用的方法,给你点个赞
    回复 有任何疑惑可以回复我~ 2022-01-02 20:46:01
  • 好聪明,从没想到 或运算符可以这样用!
    回复 有任何疑惑可以回复我~ 2022-08-07 20:44:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信