一、概述
状态管理机制:声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染
常用的装饰器有@Prop、@Link、@Provide、@Observed 和 @ObjectLink 装饰器
装饰器 | 描述 |
---|---|
@Component | 将结构体标记为可复用的UI组件,使其具有组件化能力,能够成为一个独立的组件。同时支持组件的生命周期管理和UI绘制。 |
@Entry | 将结构体标记为页面组件,代表一个完整的页面。被@Entry装饰的组件会被视为当前页面的默认入口组件,支持页面预览和组件树结构的根节点。 |
@State | 标记一个类或对象的属性为状态信息,表示该属性会随着时间的推移而发生变化。当状态发生变化时,组件的UI会相应地更新。 |
@Prop | 在子组件中定义需要从父组件接收的属性,实现父组件到子组件的数据单向传递。 |
@Link | 达成父组件与子组件之间的数据双向传递,允许子组件修改并同步数据回父组件。 |
@Provide/@Consume | 跨组件传值,通过提供方(@Provide)和消费方(@Consume)的标记来共享和更新数据。 |
@StorageLink/@StorageProp | 作用于应用全局的UI状态存储,允许在应用的多个部分之间共享和更新状态。 |
@LocalStorageLink/@LocalStorageProp | 针对页面级别的UI状态存储,方便页面间数据共享和更新。 |
@Builder | 用于创建自定义构建函数,对重复的UI元素进行抽象,提高代码复用性。 |
@BuilderParam | 引用自定义构建函数,为组件添加特定功能或参数。 |
@Styles | 定义组件的样式集合,允许将多条样式设置提炼成一个方法,便于复用。 |
@Extend | 在@Styles的基础上,用于扩展组件的样式或行为,可抽离公共的样式。 |
@Previe | 允许组件在开发过程中进行预览,但注意它本身并不直接作为装饰器使用 ,而是通过与其他装饰器(如@Entry和@Component)结合来实现预览功能。 |
装饰器 | 描述 |
---|---|
@watch | @Watch装饰器来监听数据的变化,@Watch必须配合其他装饰器(比如@State,@Prop,@Link等)一起使用。 |
@Observed&@ObjectLink | 这两个装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步。@Observed装饰class,改变class的原型链,使其数据变更被UI页面管理;@ObjectLink用于装饰已被@Observed装饰的类的对象,实现数据双向绑定。 |