生命周期
官方文档:页面和自定义组件生命周期
页面生命周期(只有被@Entry装饰的组件才可以调用页面的生命周期)
onPageShow
:页面显示时执行onPageHide
:页面隐藏时执行onBackPress
:点击返回键执行
组件生命周期(被@Component装饰的组件便可以调用组件的生命周期)
aboutToAppear
:实例创建后,在执行其build()函数之前执行onDidBuild
:组件build()函数执行完成之后回调该接口aboutToDisappear
:实例销毁前- 创建实例 →
aboutToAppear
→build()
→onDidBuild
→ … →aboutToDisappear
→ 实例销毁
本地存储
官方文档:LocalStorage:页面级UI状态存储
官方文档中将管理应用存储分为了LocalStorage(页面级)、AppStorage(应用级)、PersistentStorage(持久化存储)三种类型
但个人使用起来关注LocalStorage(页面级)、AppStorage(应用级)两种类型几乎就能应对平常的开发。
LocalStorage页面级存储
-
声明:new LocalStorage(object) ,创建一个LocalStorage,可以设置初始内容。
-
绑定到页面:在 页面的组件 上使用 @Entry(storage)进行绑定。绑定后,该页面组件、以及子组件都可使用该存储中的数据了
-
使用:
-
@LocalStorageProps:单向绑定,也就是页面改变了值的内容,不会影响到 localStore 中存储数据
-
@LocalStorageLink:双向绑定,也就是页面改变了值的内容,会一并影响到 localStore 中存储数据
-
值得一提的是,鸿蒙中@Props 都是单向绑定,@Link 都是双向绑定。
实例
// 初始化
let para: Record<string, number> = { 'one': 1 };
let storage: LocalStorage = new LocalStorage(para);
// 添加创建值
storage.setOrCreate('two', 2);
// 绑定
@Entry(storage)
@Component
struct Index {
// 使用
@LocalStorageProps('one') childLinkNumber: number = 1;
@LocalStorageLink('two') childPropsNumber: number = 1;
}
AppStorage页面级存储
AppStorage和LocalStorage的区别,主要凸显在两个地方。
- AppStorage是作用于全局的,整个应用周期, 无需声明,也无需进行@Entry(storage)绑定
- AppStorage配合PersistentStorage可以实现持久化存储
实例
// 直接设置值
AppStorage.setOrCreate('one', 1);
AppStorage.setOrCreate('two', 2);
struct Index {
// 然后使用
@StorageProps('one') childLinkNumber: number = 1;
@StorageLink('two') childPropsNumber: number = 1;
}