HarmonyOS 鸿蒙Next代码在DevEco Studio无报错但运行时出现Error message: Cannot read property items of undefined

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next代码在DevEco Studio无报错但运行时出现Error message: Cannot read property items of undefined

DevEco Studio一种莫明的错误错让你无所适从,浪费了一天的时间,太菜了。

代码在DevEco Studio没有任何报错,运行时报错Error message:Cannot read property items of undefined,

发现定义的groups[item.ncls].items,items是设置过类型的,但还是报错: ‘items ’is not assignable to parameter of type ‘never’。

感觉 DevEco Studio 编译器似呼有问题

const DreamList: DreamItem[] = [
  new DreamItem(6701,1,1000,'小孩1','周伯通','小孩','w22222','近日有7394人和你查询了相同的梦','w1'),
  new DreamItem(6702,1,1001,'小孩2','周伯通','小孩','w22222','近日有7394人和你查询了相同的梦','w2'),
  new DreamItem(6703,1,1002,'小孩3','周伯通','小孩','w22222','近日有7394人和你查询了相同的梦','w3'),
  new DreamItem(6704,1,1000,'小孩4','周伯通','小孩','w22222','近日有7394人和你查询了相同的梦','w4'),
]

class DreamEntiesModel{
  public  dataArr: DreamItem[] = []
  
  getByNcls(ncls: number){
    return DreamList[ncls]
  }

  listItemGroupByCategory(){

    let categories = DreamCategories
    let items = DreamList
  
    let groups = categories.map(itemCategory => new GroupInfo(itemCategory, this.dataArr ))
    console.log("itemModel","查看group数据111组装",JSON.stringify(groups))
    items.forEach(item =>{
      console.log("itemModel","查看group数据2222组装",'groups['+item.ncls+']')
      let data:DreamItem = item as DreamItem
      groups[item.ncls].items.push(data)
      console.log("itemModel","查看group数据333组装",JSON.stringify(groups[item.ncls].items))
    })
   
    return groups
   }
}

let DreamEnties1 = new DreamEntiesModel()

export default DreamEnties1 as DreamEntiesModel
export default class GroupInfo<TYPE, DreamItem> {
  /**
   * 分组类型
   */
  type: TYPE
  /**
   * 组内数据集合
   */
  items: DreamItem[]

  constructor(type: TYPE, items: DreamItem[]) {
    this.type = type
    this.items = items
  }
}

更多关于HarmonyOS 鸿蒙Next代码在DevEco Studio无报错但运行时出现Error message: Cannot read property items of undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

groups由categories.map得来,所以groups和DreamCategories 应该都是一个数组

groups[item.ncls].items.push(data)这一块,item是DreamList中的元素,所以你的DreamItem中应该有一个ncls的key,这个key不能大于groups长度,也就是不能大于DreamCategories数组的长度

更多关于HarmonyOS 鸿蒙Next代码在DevEco Studio无报错但运行时出现Error message: Cannot read property items of undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


已经解决好了,谢谢你!

已经解决好了,谢谢你!

针对您提到的HarmonyOS鸿蒙Next代码在DevEco Studio无报错但运行时出现“Cannot read property items of undefined”的问题,这通常指的是在运行时尝试访问一个未定义对象的“items”属性。这种情况常见于JavaScript或TypeScript环境中,尤其是当涉及到对象解析或数据绑定时。

可能的原因包括:

  1. 数据源对象未正确初始化或赋值,导致在访问其属性时返回undefined。
  2. 代码中存在逻辑错误,可能在某个条件分支中未能正确设置对象。
  3. 异步数据处理不当,可能在数据实际到达前就尝试访问其属性。

解决此问题,您可以检查以下几点:

  • 确保在访问“items”属性之前,相关对象已被正确初始化并赋值。
  • 检查数据绑定逻辑,确保数据在UI组件渲染前已准备好。
  • 如果是异步操作,确保在数据加载完成后再进行属性访问。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,您可以获得更专业的技术支持和帮助。

回到顶部