美文网首页
鸿蒙~AppStorage中对应的属性建立双向或单向同步

鸿蒙~AppStorage中对应的属性建立双向或单向同步

作者: 胡修波 | 来源:发表于2024-01-10 07:59 被阅读0次
  • AppStorage是LocalStorage的单例对象,ArkUI在应用程序启动时创建该对象,在页面中使用@StorageLink和@StorageProp为多个页面之间共享数据
  • 也可以使用PersistentStorage将AppStorage中的特定属性持久化到本地磁盘的文件中,再次启动的时候@StorageLink和@StorageProp会恢复上次应用退出的数据
@Component
struct LinkLinkChild {
  @StorageLink("testNum") @Watch("testNumChange") testNum: number = 1;

  testNumChange(propName: string): void {
    console.log(`LinkLinkChild: testNum value ${this.testNum}`);
  }

  build() {
    Text(`LinkLinkChild: ${this.testNum}`)
  }
}

@Component
struct PropLinkChild {
  @StorageProp("testNum") @Watch("testNumChange") testNumGrand: number = 1;

  testNumChange(propName: string): void {
    console.log(`PropLinkChild: testNumGrand value ${this.testNumGrand}`);
  }

  build() {
    Text(`PropLinkChild: ${this.testNumGrand}`)
      .height(70)
      .backgroundColor(Color.Red)
      .onClick(() => {
        this.testNumGrand += 1;
      })
  }
}

@Component
struct Sibling {
  @StorageLink("testNum") @Watch("testNumChange") testNum: number = 1;

  testNumChange(propName: string): void {
    console.log(`Sibling: testNumChange value ${this.testNum}`);
  }

  build() {
    Text(`Sibling: ${this.testNum}`)
  }
}

@Component
struct LinkChild {
  @StorageLink("testNum") @Watch("testNumChange") testNum: number = 1;

  testNumChange(propName: string): void {
    console.log(`LinkChild: testNumChange value ${this.testNum}`);
  }

  build() {
    Column() {
      Button('incr testNum')
        .onClick(() => {
          console.log(`LinkChild: before value change value ${this.testNum}`);
          this.testNum = this.testNum + 1
          console.log(`LinkChild: after value change value ${this.testNum}`);
        })
      Text(`LinkChild: ${this.testNum}`)
      LinkLinkChild({ /* empty */
      })
      PropLinkChild({ /* empty */
      })
    }
    .height(200).width(200)
  }
}


@Entry
@Component
struct Parent {
  @StorageLink("testNum") @Watch("testNumChange1") testNum: number = 1;

  testNumChange1(propName: string): void {
    console.log(`Parent: testNumChange value ${this.testNum}`)
  }

  build() {
    Column() {
      LinkChild({ /* empty */
      })
      Sibling({ /* empty */
      })
    }
  }
}

相关文章

  • 电脑各种文件同步的软件

    文件同步软件是一类关于电脑各种文件同步的软件,可以在指定的两个文件夹之间进行单向或双向的同步,同时也能满足用户实现...

  • day03-双向链表

    双向链表: 单向链表只能单向查找,双向链表可以双向查找。 啥是双向链表? 双向链表可以双向查数据,所以就不存在单向...

  • Hibernate关联关系总结

    文章内容:1.OnetoOne 单向 双向关联2.ManytoOne单向 双向关联3.OnetoMany单向 双向...

  • Vue 中的双向数据绑定

    双向绑定 单向数据流 双向绑定 or 单向数据流 Vue 是单向数据流,不是双向绑定 Vue 的双向绑定是语法糖 ...

  • vue基础

    v-bind:v-bind:(属性名) 单向数据绑定 v-model:v-model:(属性名) 双向数据绑定,一...

  • 2019-01-31 UML 2.0

    1. 关联关系(Association) 1. 一个类知道另一个类的属性和方法2. 关联可以是双向的或单向的。 ...

  • 2019-12-04 Java-LinkedList源码解读

    @TOC 1、链表数据结构 链表分为单向链表和双向链表,他们的区别在于,单向链表只能单向寻址,而双向链表可以双向寻...

  • Vue和React数据绑定对比

    在数据绑定上来说,vue的特色是双向数据绑定,而在react中是单向数据绑定。 一 单向和双向数据绑定其实不是完全...

  • FreeFileSync – 开源的简单文件夹同步工具

    软件截图: 优点: 开源免费 操作简单、中文界面 支持单向、双向同步 支持历史版本 支持定时自动监控 支持文件过滤...

  • (三、8)双向数据绑定

    使用单向数据绑定,您可以在属性上设置值,并设置对该属性中的更改作出反应的侦听器: 双向数据绑定提供了此过程的快捷方...

网友评论

      本文标题:鸿蒙~AppStorage中对应的属性建立双向或单向同步

      本文链接:https://www.haomeiwen.com/subject/qzzandtx.html