HarmonyOS 鸿蒙Next @Style有办法遍历赋值吗
HarmonyOS 鸿蒙Next @Style有办法遍历赋值吗 比如我有多个Rect想按顺序使用clip裁剪,如果明确知道的情况下貌似是可以一直.clip的
但是如果我是一个数组里多个Rect(Rect不能直接创建,其实是相关参数),有没有办法循环赋值呢?我试了ForEach貌似只支持创建子组件不支持.clip这种形式
8 回复
凑合看一下吧,感觉缺少点优雅
@Entry
@Componentstruct Index {
@State clipData: any[] = [
new Rect({ radius: 20, width: 50, height: 100 }),
new Rect({ radius: 10, width: 100, height: 50 })
]
build() {
Column() {
ClipComp({ data: this.clipData }) {
Shape().width(100).height(100).backgroundColor(Color.Blue)
}
}.backgroundColor(Color.Red)
}
}
@Componentstruct ClipComp {
@Prop data: any[]
@BuilderParam child: () => void
build() {
Stack() {
if (this.data.length == 1) {
this.child()
} else {
ClipComp({ data: this.data.slice(1) }) {
this.child()
}
}
}.clip(this.data[0])
}
}
更多关于HarmonyOS 鸿蒙Next @Style有办法遍历赋值吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
试了下好像没用啊,最后显示的还是一个宽高100的蓝色矩形 而且这样好像也不太符合我的需求,
只裁剪显示内容,不裁剪控件真实宽高的,
你的需求不是一直.clip吗,
我传 Image 可以的
呃,可能是别的问题了,之前没看preview,现在发现实机的效果跟preview不一致,
在HarmonyOS中,@Style
是用于定义组件样式的装饰器。目前,@Style
本身并不直接支持遍历赋值的功能。@Style
主要用于静态定义样式属性,而不是动态地通过遍历来赋值。
如果你需要动态地设置样式或属性,可以考虑使用其他方式,例如通过@State
或@Prop
来管理组件的状态,然后根据状态动态调整样式。这种方式可以在组件渲染时根据条件或数据进行样式的动态调整。
@Style
更适用于定义一组固定的样式规则,而不是用于动态的遍历赋值操作。如果你需要在组件中动态应用样式,建议使用状态管理机制来控制样式的变化。