这个问题是因为, 如果缓存为空, 读取缓存并赋值给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
})
}