状态管理是MVVM模式中十分复杂的问题,为解决其中状态和视图一致性、渲染性能、代码可复用性和可维护性四个问题
MVVM = Model + View + ViewModel
-
Model层:存储数据和相关逻辑的模型。它表示组件或其他相关业务逻辑之间传输的数据。Model是对原始数据的进一步处理
-
View层:在ArkUI中通常是@Component装饰组件渲染的UI
-
ViewModel层:在ArkUI中,ViewModel是存储在自定义组件的状态变量、LocalStorage和AppStorage中的数据
状态管理四种级别:
- 第一种
1. 1 @State+@Prop:适合状态结构简单,且共享状态的组件间层级相差不大的场景。或功能上要求子组件不实时同步修改给父组件的场景
1.2 @State+@Link:适合状态结构复杂,且共享状态的组件间层级相差不大的场景。或功能上要求子组件对状态的修改实时同步给父组件的场景
1.3 @State+@Observed+@ObjectLink:适合需要观察嵌套类对象的子属性变化的场景或对象数组的数据项属性变化的场景,如监听列表卡片上某个属性的变化。
2.第二种 @Provide+@Consume:适合用于对于整个组件树而言“全局”的状态,且该状态改动不频繁的状态共享场景,如共享界面的路由信息。
3. 第三种AppStorage:适合对于整个应用而言“全局”的变量或应用的主线程内多个UIAbility实例间的状态共享,如用户信息。
4. 第四种LocalStorage:适合对于单个Ability而言“全局”的变量,主要用于不同页面间的状态共享场景。