目录
1 -> 在生成器函数中的使用限制
2 -> 变量的双向绑定
3 -> 自定义组件成员变量初始化的方式与约束
1 -> 在生成器函数中的使用限制
ArkTS语言的使用在生成器函数中存在一定的限制:
表达式仅允许在字符串(${expression})、if条件、ForEach的参数和组件的参数中使用;
任何表达式都不能导致任何应用程序状态变量(@State、@Link、@Prop)的改变,否则会导致未定义和潜在不稳定的框架行为;
生成器函数内部不能有局部变量。
上述限制都不适用于事件处理函数(例如onClick)的匿名函数实现。
2 -> 变量的双向绑定
ArkTS支持通过$$双向绑定变量,通常应用于状态值频繁改变的变量。 当前$$支持基础类型变量,以及@State、@Link和@Prop装饰的变量。
当前$$仅支持bindPopup属性的show参数和@State变量之间的渲染,Radio组件的checked属性。 $$绑定的变量变更时,仅渲染当前组件,提高渲染速度。
@Entry
@Component
struct bindPopup {
@State customPopup: boolean = false
build() {
Column() {
Button(){
Text('Popup')
}
.onClick(()=>{
this.customPopup = !this.customPopup
})
.bindPopup(
$$this.customPopup, {
message: "showPopup"
}
)
}
}
}
3 -> 自定义组件成员变量初始化的方式与约束
组件的成员变量可以通过两种方式初始化:
本地初始化:
@State counter: Counter = new Counter()
在构造组件时通过构造参数初始化:
MyComponent({counter: $myCounter})
装饰器类型 本地初始化 通过构造函数参数初始化
@State 必须 可选
@Prop 禁止 必须
@Link 禁止 必须
@StorageLink 必须 禁止
@StorageProp 必须 禁止
@Provide 必须 可选
@Consume 禁止 禁止
@ObjectLink 禁止 必须
常规成员变量 推荐 可选
从上表中可以看出:
通过构造函数方法初始化成员变量,需要遵循如下规则:
从父组件中的变量(下)到子组件中的变量(右) @State @Link @Prop 常规变量
@State 不允许 允许 允许 允许
@Link 不允许 允许 不推荐 允许
@Prop 不允许 不允许 允许 允许
@StorageLink 不允许 允许 不允许 允许
@StorageProp 不允许 不允许 不允许 允许
常规变量 允许 不允许 不允许 允许
从上表中可以看出:
感谢各位大佬支持!!!
互三啦!!!