HarmonyOS 鸿蒙Next AppStorageV2只能存储对象不能存储简单类型么

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

HarmonyOS 鸿蒙Next AppStorageV2只能存储对象不能存储简单类型么 AppStorageV2只能存储对象不能存储简单类型么

string,number这种类型

可以给个存储简单类型的示例么

3 回复

使用@Monitor注解,参考连接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-monitor-V5#在componentv2装饰的自定义组件中使用monitor

@Entry
@ComponentV2
struct Page1 {

  [@Local](/user/Local) prop: string = '11';

  [@Monitor](/user/Monitor)("prop")
  onStrChange(monitor: IMonitor) {
    monitor.dirty.forEach((path: string) => {
      console.log(`${path} changed from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
    })
  }
  build() {
    Column () {
      Button('Go to page2')
        .onClick(() => {
          AppStorage.setOrCreate('test','content11')
          this.prop = AppStorage.get('test') as string
        })
    }
  }
}

@Local只会监听组件内部状态,其他地方更改这个变量不会改变。如果想在其他地方更改,使用AppStorageV2只能存储对象,需要使用new String() , new Number()的方式创建全局变量

import { AppStorageV2 } from '@kit.ArkUI';

@Entry
@ComponentV2
struct Page1 {

  [@Local](/user/Local) prop: String = AppStorageV2.connect(String, () => new String('test'))!;

  [@Monitor](/user/Monitor)("prop")
  onStrChange(monitor: IMonitor) {
    monitor.dirty.forEach((path: string) => {
      console.log(`${path} changed from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
    })
  }
  build() {
    Column () {
      Button('Go to page2')
        .onClick(() => {
          this.prop = 'test11'
        })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next AppStorageV2只能存储对象不能存储简单类型么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


支持存储简单类型包装类,示例如下:

// 保存number
AppStorageV2.connect<Number>(Number, 'myNumber', () => new Number(123123))
// 取number
const testNumber = AppStorageV2.connect(Number, 'myNumber') as Number
// 取原始值
const testNumberValueOf = testNumber.valueOf()

HarmonyOS 鸿蒙Next AppStorageV2不仅支持存储对象,也支持存储简单类型

在HarmonyOS鸿蒙Next版本中,AppStorageV2是一个用于应用数据持久化的机制。它提供了灵活的数据存储方式,可以满足不同数据类型的需求。对于简单类型(如整型、浮点型、布尔型等),AppStorageV2同样提供了存储支持。开发者可以通过定义相应的数据结构,并将简单类型封装在其中,然后使用AppStorageV2的API进行存储和读取。

此外,AppStorageV2还支持对象存储,这允许开发者将复杂的数据结构(如类实例)直接存储到持久化存储中。这对于需要保存应用状态或用户数据的场景非常有用。

需要注意的是,虽然AppStorageV2提供了灵活的数据存储方式,但在实际使用中仍需遵循其设计规范和API要求。开发者应确保数据类型与存储机制相匹配,并正确处理数据的序列化和反序列化过程。

如果在使用AppStorageV2存储简单类型时遇到问题,可能是数据类型定义不正确或API使用不当导致的。建议仔细检查代码,确保数据类型和API使用符合HarmonyOS鸿蒙Next的规范。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部