更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 应用开发 > DevEco Studio鸿蒙开发Ets里面object类型有办法更新吗

DevEco Studio鸿蒙开发Ets里面object类型有办法更新吗

更新时间:2022-06-25 15:13:05浏览次数:304+次

使用的是DevEco Studio鸿蒙OS开发工具,然后用以下代码这种方式更新前端不会跟着更新,文档里面看到有@State装饰(@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新),但是不支持object类型,有其他方式解决吗?

代码

lis:Array<object> = [

  {

    'id': 0,

    'name': '计划',

    'image': $rawfile('index/ic_public_view_list_filled2.png'),

    'number':0

  },

this.lis['0'].name = 1

\

附:@State状态数据具有以下特征:

支持多种类型:允许class、number、boolean、string强类型的按值和按引用类型。允许这些强类型构成的数组,即Array<class>、Array<string>、Array<boolean>、Array<number>。不允许object和any。

支持多实例:组件不同实例的内部状态数据独立。

内部私有:标记为@State的属性是私有变量,只能在组件内访问。

需要本地初始化:必须为所有@State变量分配初始值,将变量保持未初始化可能导致框架行为未定义。

创建自定义组件时支持通过状态变量名设置初始值:在创建组件实例时,可以通过变量名显式指定@State状态属性的初始值。

解答

“number”最好不要作为属性,因为“number”是字段类型。Object请改为class,示例代码如下:

@Observed export class xxx {

  id: number;

  name: string;

  image: string;

  number: number;

  constructor(id: number, name: string, image:string,number:number) {

    this.id = id;

    this.name = name;

    this.image = name;

    this.number = number;

  }

}

lis: Array<xxx> = [{

    'id': 0,

    'name': '计划',

    'image': xxx,

    'number': 0

}]

this.lis[0].name='new Name'

注:根据以上示例解决问题。