重新写入缓存就要报错

来源:8-13 showToast接口的应用

土豆love洋芋

2020-10-04

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

写回答

2回答

weixin_慕UI5143857

2020-10-05

这个问题是因为, 如果缓存为空, 读取缓存并赋值给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
1
爱敲代码的小乐
哇哦,非常感谢,我刚刚把缓存删除就出现了上述问题,按照您的方法加上一个判断解决了,确实是您说的问题。再次感谢。
2020-11-05
共1条回复

7七月

2020-10-04

描述问题请详细一些

0
0

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23866 学习 · 6899 问题

查看课程