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 可以的

cke_132.png

呃,可能是别的问题了,之前没看preview,现在发现实机的效果跟preview不一致,

顶下,有人能解答下吗

在HarmonyOS中,@Style是用于定义组件样式的装饰器。目前,@Style本身并不直接支持遍历赋值的功能。@Style主要用于静态定义样式属性,而不是动态地通过遍历来赋值。

如果你需要动态地设置样式或属性,可以考虑使用其他方式,例如通过@State@Prop来管理组件的状态,然后根据状态动态调整样式。这种方式可以在组件渲染时根据条件或数据进行样式的动态调整。

@Style更适用于定义一组固定的样式规则,而不是用于动态的遍历赋值操作。如果你需要在组件中动态应用样式,建议使用状态管理机制来控制样式的变化。

回到顶部