请稍等 ...
×

采纳答案成功!

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

重新写入缓存就要报错

const postsCollect=this.data._postCollect
修改这了。为什么把本地缓存删除了。。重新写入缓存就要报错呢?写入的缓存就是String.就是不是obj了呢?

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

2回答

weixin_慕UI5143857 2020-10-05 16:45:59

这个问题是因为, 如果缓存为空, 读取缓存并赋值给postsCollect, postsCollect变量会被JS当作是一个字符串变量, 他就不是一个Object, 在使用JS对象的相关语法就会报错, 建议增加一个缓存是否为空的判断:

 /**

   * 生命周期函数--监听页面加载

   */

  onLoad: function (options) {

    const postData = postList[options.pid]

    this.data._pid = options.pid

    //追加判断缓存是否为空, 为空postsCollected初始化一个空对象

    let postsCollected

    if(!wx.getStorageSync('posts_collected')){

      postsCollected = {}

    } else {

      postsCollected = wx.getStorageSync('posts_collected')

    }

    this.data._postsCollected = postsCollected

    let collected = postsCollected[this.data._pid]


    //如果collected从没被定义过, 那么文章从来没被收藏过

    if(collected === undefined) {

      collected = false;

    }


    this.setData({

      postData,

      collected

    })

  }


2 回复 有任何疑惑可以回复我~
  • 哇哦,非常感谢,我刚刚把缓存删除就出现了上述问题,按照您的方法加上一个判断解决了,确实是您说的问题。再次感谢。
    回复 有任何疑惑可以回复我~ 2020-11-05 19:51:22
7七月 2020-10-04 19:03:24

描述问题请详细一些

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信