点击收藏的数据结构应该用数组

来源: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对象就很好用,数组反而麻烦。数组不太好表示取消和收藏着两种状态。

0
0

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

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

23960 学习 · 6930 问题

查看课程