HarmonyOS 鸿蒙Next @Provider/@Consumer 相比 @Provide/@Consume 有什么优势?
HarmonyOS 鸿蒙Next @Provider/@Consumer 相比 @Provide/@Consume 有什么优势?
在@Provide/@Consume的基础上又推出@Provider/@Consumer有什么必要性?
@Provider和@Consumer vs @Provide和@Consume能力对比
在状态管理V1版本中,提供跨组件层级双向的装饰器为@Provide和@Consume,当前文档介绍的是状态管理V2装饰器@Provider和@Consumer。虽然两者名字和功能类似,但在特性上还存在一些差异。
能力 | V2装饰器@Provider和@Consumer | V1装饰器@Provide和@Consume |
---|---|---|
@Consume® | 允许本地初始化,当找不到@Provider的时候使用本地默认值。 | 禁止本地初始化,当找不到对应的的@Provide时候,会抛出异常。 |
支持类型 | 支持function。 | 不支持function。 |
观察能力 | 仅能观察自身赋值变化,如果要观察嵌套场景,配合@Trace一起使用。 | 观察第一层变化,如果要观察嵌套场景,配合@Observed和@ObjectLink一起使用。 |
alias和属性名 | alias是唯一匹配的key,如果缺省alias,则默认属性名为alias。 | alias和属性名都为key,优先匹配alias,匹配不到可以匹配属性名。 |
@Provide® 从父组件初始化 | 禁止。 | 允许。 |
@Provide®支持重载 | 默认开启,即@Provider可以重名,@Consumer向上查找最近的@Provider。 | 默认关闭,即在组件树上不允许有同名@Provide。如果需要重载,则需要配置allowOverride。 |
更多关于HarmonyOS 鸿蒙Next @Provider/@Consumer 相比 @Provide/@Consume 有什么优势?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复