arkts中状态管理

一:1 arkts中localstorage的使用

(1)在entryAbility.ets中定义localstorage变量


export default class EntryAbility extends UIAbility {
    CITY:LocalStorage=new LocalStorage({city:"beijing"});



      onWindowStageCreate(windowStage: window.WindowStage) {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/Index',this.CITY, (err, data) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
    });
  }
}

(2) 在当前页面通过localstorage的app定义一个storage对象并传入entry装饰器函数中

let storage=LocalStorage.GetShared();

@Entry(storage)
@Component
struct Index {

    build() {
        Column(){
        
        }

    }

}

(3)在当前页面中定义一个变量别名作为localstorage变量的引用

let storage=LocalStorage.GetShared();

@Entry(storage)
@Component
struct Index {

  @State list:MyItem[]=[]
  @LocalStorageLink("city") cityName:string="北京"

  

  build() {
    Column(){
        Row() {
            Text(`当前城市${cityName}`)
        }
    }
}

二:arkts中AppStorage的使用。

localStorage虽然可以实现多页面数据共享,但是在多个页面需要每次定义storage对象然后通过

LocalStorage.GetShared();去获得当前storage的值。而AppStorage则提供了一个更简单的方式。使用方式如下:

(1)在entryAbility.ets中定义全局的对象


export default class EntryAbility extends UIAbility {
 
  onWindowStageCreate(windowStage: window.WindowStage) {
    
    AppStorage.SetOrCreate("city","beijing")
    windowStage.loadContent('pages/Index',(err, data) => {
      
      
    });
  }

  onForeground() {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }

  onBackground() {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }
}

通过AppStorage.SetOrCreate(key,value) ,定义全局的cityname,默认值为北京

2. 在具体页面中通过设置一个变量别名作为Appstorage变量city的引用ye


@Entry()
@Component
struct Index {

 
  @StorageLink("city") cityName:string="beijing"

 
  build() {
    Column(){
        Row() {
          Column() {
              Row(){
                    Text('${this.cityName}')
                
              }
                Row(){
                    Button("更改城市名称").onClick(()=>{
                    this.cityName="Shanghai"
                    //这里也可以通过AppStorage.set("city",'SHANHGHAI')进行更改
                })
            }
           }
        }
    .height('100%')
  }
}

 注意:localstorage和appStorage都是存在内存之中,进程结束数据将会丢失

相关推荐

  1. arkts状态管理

    2024-07-17 10:58:04       26 阅读
  2. 鸿蒙 - arkTs状态管理

    2024-07-17 10:58:04       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 10:58:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 10:58:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 10:58:04       58 阅读
  4. Python语言-面向对象

    2024-07-17 10:58:04       69 阅读

热门阅读

  1. mac如何查看cpu和显卡温度

    2024-07-17 10:58:04       27 阅读
  2. 关于HBase、Phoenix、Flume、Maxwell 和 Flink

    2024-07-17 10:58:04       25 阅读
  3. 银河麒麟如何部署QtMqtt(入门案例教程)

    2024-07-17 10:58:04       25 阅读
  4. Android中ContentProvider学习记录

    2024-07-17 10:58:04       23 阅读
  5. IPython 宏魔法:%macro 命令的高效使用指南

    2024-07-17 10:58:04       25 阅读
  6. 五、python列表

    2024-07-17 10:58:04       27 阅读
  7. 大语言模型系列 - Transformer:从基础原理到应用

    2024-07-17 10:58:04       23 阅读
  8. vue3 学习笔记13 -- 生命周期和防抖节流

    2024-07-17 10:58:04       24 阅读