点击收藏的数据结构应该用数组
来源:8-11 缓存如何不被覆盖?

爱思考的猫
2023-05-26
老师您好,我觉得点击收藏那部分数据应该用数组结构,如果是真实调用接口应该不会以对象{ 0;true , 1: false} 这种形式吧,您看一下我写的代码哪里还有哪里需要改进的地方
//详情页面的代码
import { dataList } from "…/…/data/data"
Page({
/**
- 页面的初始数据
/
data: {
oldOperate: [
{
id:0,
col:false
},
{
id:1,
col:false
},
{
id:2,
col:false
},
{
id:3,
col:false
},
{
id:4,
col:false
}
]
},
collectArticle() {
let id = Number(this.data.openId)
this.data.oldOperate.forEach((item)=>{
console.log(item)
if(item.id == id){
item.col = !item.col
console.log(item)
if(item.col){
this.setData({
collectIcon: ‘/images/icon/collection.png’
})
}else{
this.setData({
collectIcon: ‘/images/icon/collection-anti.png’
})
}
}
})
console.log(‘operate’, this.data.oldOperate)
wx.setStorageSync(‘operate’, this.data.oldOperate)
},
/* - 生命周期函数–监听页面加载
*/
onLoad(options) {
//获取对应的详情数据
let detail = dataList[options.id]
this.setData({
openId: options.id
})
this.setData(detail)
//尝试从本地存储获取收藏数据
wx.getStorage({
key: ‘operate’
}).then((item)=>{
//如果能拿到赋值给data
this.setData({
oldOperate: item.data
})
}).catch((item)=>{
//如果拿不到将data中的初始数据存到本地
wx.setStorageSync(‘operate’, this.data.oldOperate)
}).then((item)=>{
let panduan = this.data.oldOperate[options.id].col
if(panduan){
this.setData({
collectIcon: ‘/images/icon/collection.png’
})
}else{
this.setData({
collectIcon: ‘/images/icon/collection-anti.png’
})
}
})
},
/**
- 生命周期函数–监听页面初次渲染完成
*/
onReady() {
},
/**
- 生命周期函数–监听页面显示
*/
onShow() {
},
/**
- 生命周期函数–监听页面隐藏
*/
onHide() {
},
/**
- 生命周期函数–监听页面卸载
*/
onUnload() {
},
/**
- 页面相关事件处理函数–监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
- 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
- 用户点击右上角分享
*/
onShareAppMessage() {
}
})
写回答
1回答
-
7七月
2023-05-27
JS对象就很好用,数组反而麻烦。数组不太好表示取消和收藏着两种状态。
00
相似问题