点击收藏的数据结构应该用数组
来源: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
相似问题
