postsCollected[this.data._pid] = !this.data.collected 报错
来源:8-12 同步文章缓存状态
慕瓜2362818
2024-09-16
/**
- 页面的初始数据
*/
data: {
postData: {},
collected: false,
_pid: null,
_postsCollected:{}
},
/**
- 生命周期函数–监听页面加载
*/
onLoad(options) {
//接受url传递参数 放入data pid无需在视图显示,所以不用setData方法
console.log(options)
this.data._pid = options.pid
//根据参数获取对应的数据
const postData = postList[options.pid]
//console.log(postData)
//从缓存中读取所有文章收藏状态数据
const postsCollected = wx.getStorageSync('post_collected')
this.data._postsCollected=postsCollected
let collected=postsCollected[this.data._pid]
if(collected===undefined){
collected=false
}
//将数据存入data
this.setData({
postData,
collected
})
},
/**
*
- 关注
*/
onCollect(event) {
//从缓存中读取所有文章收藏状态数据
const postsCollected =this.data._postsCollected
//修改当前文章的收藏状态
postsCollected[this.data._pid] = !this.data.collected
//放入data
this.setData({
collected:!this.data.collected
})
//放入缓存
wx.setStorageSync('post_collected', postsCollect)
},
老师帮看下 实在不知到哪里错了 点击关注图标报错
TypeError: Cannot create property ‘0’ on string ''
at Oi.onCollect (post-detail.js? [sm]:58)
postsCollected[this.data._pid] = !this.data.collected
这一行报错
1回答
-
慕瓜2362818
提问者
2024-09-16
/**
* 页面的初始数据
*/
data: {
postData: {},
collected: false,
_pid: null,
_postsCollected:{}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
//接受url传递参数 放入data _pid无需在视图显示,所以不用setData方法
console.log(options)
this.data._pid = options.pid
//根据参数获取对应的数据
const postData = postList[options.pid]
//console.log(postData)
//从缓存中读取所有文章收藏状态数据
let postsCollected = wx.getStorageSync('post_collected')
//当前文章收藏状态默认
let collected=false;
if (postsCollected) {
console.log("缓存中的postsCollecte存在")
this.data._postsCollected=postsCollected
}else{
console.log("缓存中的postsCollecte不存在")
//手动设置当前文章为未来收藏
postsCollected={}
postsCollected[this.data._pid]=collected
//设置_postsCollected
this.data._postsCollected=postsCollected
//加入缓存
wx.setStorageSync('post_collected', postsCollected)
}
//将数据存入data
this.setData({
postData,
collected
})
},
/**
*
* 关注
*/
onCollect(event) {
//从data读取当前文章的数据
const postsCollected =this.data._postsCollected
//修改当前文章的收藏状态
postsCollected[this.data._pid] = !this.data.collected
//放入data
this.setData({
collected:!this.data.collected
})
//放入缓存
wx.setStorageSync('post_collected', postsCollected)
},
}
ok 首次加载没有缓存的时候应该默认给一个false的缓存
00
相似问题