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的缓存

0
0

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

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

23866 学习 · 6899 问题

查看课程