请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TypeError: Cannot create property '1' on string ''

代码是跟着老师敲的,大概知道错误在postsCollected上,但想不通怎么改,老版也有类似提问,但新版的代码有些不同,本人菜鸟,麻烦大佬指点下
图片描述

// pages/post-detail/post-detail.js
import {postList} from '../../data/data.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    postData:{},
    collected:false,
    _pid:null,
    _postsCollected:{}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {    
    const postData = postList[options.pid]
    this.data._pid = options.pid
    
    const postsCollected = wx.getStorageSync('posts_collected')  //个人感觉错误在本行

    this.data._postsCollected = postsCollected
    let collected = postsCollected[this.data._pid]
    if(collected === undefined){
      collected = false
    }
    
    this.setData({
      postData,
      collected
    })
  },

  onCollect(event){
    const postsCollected = this.data._postsCollected
   
    postsCollected[this.data._pid] = !this.data.collected
    this.setData({
      collected:!this.data.collected
    })
    wx.setStorageSync('posts_collected', postsCollected)
  },

正在回答

5回答

  1. 首先找到这个错误发生的代码行数

  2. 在这个代码行数之前的每一步console.log打印变量 逐步分析,就能找到哪里写错了

0 回复 有任何疑惑可以回复我~
  • 提问者 atmonsters #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-10-03 14:57:19
  • 提问者 atmonsters #2
    老师,能不能推荐下学完这门课后该看哪个,买了全栈课,但是还是有些看不懂,想买您的中级课,有三门不知道怎么选,或者说学的顺序是怎样
    回复 有任何疑惑可以回复我~ 2020-10-03 14:59:19
  • 7七月 回复 提问者 atmonsters #3
    这门课程看完后应该看 纯正商业应用 全栈课的小程序基础是以纯正作为标准的。
    回复 有任何疑惑可以回复我~ 2020-10-12 21:31:24
慕莱坞1351805 2020-10-28 13:28:47

删除缓存数据后会报这个错误,原因:

1,const postsCollected = wx.getStorageSync('posts_collected') 这行代码查询缓存数据结果为空字符串

2,this.data._postsCollected = postsCollected 这行代码会把 this.data._postsCollected 赋值为空字符串

3,所以在onCollect函数中我们获取的_postsCollected变量是空字符串: Cannot create property '1' on string ''

const postsCollected = this.data._postsCollected
postsCollected[this.data._pid] = !this.data.collected


解决方法:

修改 const postsCollected = this.data._postsCollected 为 const postsCollected = this.data._postsCollected || {}

6 回复 有任何疑惑可以回复我~
  • 太感谢啦~ 自己找原因怎么找都找不到!
    回复 有任何疑惑可以回复我~ 2021-03-01 23:28:36
_简简丶单单_蓝颜 2020-10-13 10:25:50

要转换类型

1 回复 有任何疑惑可以回复我~
3301942 2020-10-12 15:21:15

加了一个判断

onCollect: function(event) {

   if (this.data._articleCollected){

     var articleCollected = this.data._articleCollected

   }else{

     var articleCollected = {}

   }

}


1 回复 有任何疑惑可以回复我~
慕田峪8097929 2020-09-29 11:59:04

没有缓存的时候获取到的是空字符串不是undefined

1 回复 有任何疑惑可以回复我~
  • 7七月 #1
    这个不影响,空字符一样被视作是否。你可以if一个空字符看看
    回复 有任何疑惑可以回复我~ 2020-09-29 19:57:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信