HarmonyOS 4.0 全局状态管理

在开发 Harmony 应用中会遇到多模块数据共享的场景,尝试寻找类似于 vuex 的状态管理仓库,官方提供了 @StorageLink装饰器 用于做应用内的状态同步,并提供双向数据绑定和数据持久化的功能

双向同步数据示例

@Entry
@Component
struct EntryComponent {
  @StorageLink('key1') link1: string = 'hello'
  build() {
    Column({ space: 20 }) {
      Text(this.link1).fontSize(30)
        .onClick(() => {
          this.link1 = '你好'
        })
    }
  }
}

@Entry
@Component
struct Entry2Component {
  @StorageLink('key1') link1: string = ''
  build() {
    text(this.link1)
  }
}

上面代码当 EntryComponent 页面的 key1 发生数据变化时, Entry2Component 页面会自动更新 key1 的并渲染到页面上


数据持久化

A页面

PersistentStorage.PersistProp("key1", "hello") 

@Entry
@Component
struct EntryComponent {
  @StorageLink('key1') link1: string = 'hello'
  build() {
    Column({ space: 20 }) {
      Text(this.link1).fontSize(50)
        .onClick(() => {
          this.link1 = '你好,鸿蒙!'
        })
    }
  }
}

b页面

@Entry
@Component
struct EntryComponent {
  @StorageLink('key1') link1: string = ''
  build() {
    Column({ space: 20 }) {
      Text(this.link1)
    }
  }
}

如上代码当 A 页面数据发生变化时, B 页面会更新数据,并对该数据进行持久化处理(退出应用后状态不会被重置)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇