AppStorage
AppStorage 是在应用启动的时候会被创建的单例。 它的目的是为了提供应用状态数据的中心存储,这些状态数据在应用级别都是可访问的。 AppStorage 将在应用运行过程保留其属性。属性通过唯一的键字符串值访问。
分类
@StorageProp
不会同步
@StorageLink
会同步
观察
- 只能观察到第一层的
限制条件
WARNING
@StorageProp/@StorageLink 的属性必须为 string 类型 @StorageLink('xxxx')
@StorageProp 与@StorageLink 不支持装饰 Function 类型的变量,框架会抛出运行时错误
除非配合 PersistentStorage 否则推出程序后数据会丢失
简易 demo
无需声明,直接使用即可
ts
AppStorage.setOrCreate("name", "张三");
AppStorage.setOrCreate("age", 56);
struct Person {
// 然后使用
@StroageProps("name") name:string = "";
@StroageLink("age") age:number = 56;
}
完整使用
ts
import {router} from "@kit.ArkUI"
// 放到任意的位置都可以
AppStorage.setOrCreate("name","张三")
AppStorage.setOrCreate("age",36)
@Entry
@Component
struct Index {
@StorageLink("name") name:string = "";
@StorageLink("age") age:number = 23;
build() {
Column({space:20}){
Row(){
Text(this.age.toString()).fontSize(48).fontColor(Color.Green)
Text(this.name).fontSize(48).fontColor(Color.Green)
}
Row(){
Button("点击改变年龄").onClick(()=>{
this.age +=1;
})
Button("点击改变年龄").onClick(()=>{
this.name = "名字改变了";
})
}
Row(){
Button("点击跳转").onClick(()=>{
router.pushUrl({
url:'pages/Index2'
})
})
}
}
}
}