@Styles裝飾器:定義組件重用樣式

2024-01-25 12:01 更新

如果每個組件的樣式都需要單獨設(shè)置,在開發(fā)過程中會出現(xiàn)大量代碼在進行重復(fù)樣式設(shè)置,雖然可以復(fù)制粘貼,但為了代碼簡潔性和后續(xù)方便維護,我們推出了可以提煉公共樣式進行復(fù)用的裝飾器@Styles。

@Styles裝飾器可以將多條樣式設(shè)置提煉成一個方法,直接在組件聲明的位置調(diào)用。通過@Styles裝飾器可以快速定義并復(fù)用自定義樣式。用于快速定義并復(fù)用自定義樣式。

說明

從API version 9開始,該裝飾器支持在ArkTS卡片中使用。

裝飾器使用說明

  • 當前@Styles僅支持通用屬性通用事件。
  • @Styles方法不支持參數(shù),反例如下。
    1. // 反例: @Styles不支持參數(shù)
    2. @Styles function globalFancy (value: number) {
    3. .width(value)
    4. }
  • @Styles可以定義在組件內(nèi)或全局,在全局定義時需在方法名前面添加function關(guān)鍵字,組件內(nèi)定義時則不需要添加function關(guān)鍵字。
    1. // 全局
    2. @Styles function functionName() { ... }
    3. // 在組件內(nèi)
    4. @Component
    5. struct FancyUse {
    6. @Styles fancy() {
    7. .height(100)
    8. }
    9. }
  • 定義在組件內(nèi)的@Styles可以通過this訪問組件的常量和狀態(tài)變量,并可以在@Styles里通過事件來改變狀態(tài)變量的值,示例如下:
    1. @Component
    2. struct FancyUse {
    3. @State heightValue: number = 100
    4. @Styles fancy() {
    5. .height(this.heightValue)
    6. .backgroundColor(Color.Yellow)
    7. .onClick(() => {
    8. this.heightValue = 200
    9. })
    10. }
    11. }
  • 組件內(nèi)@Styles的優(yōu)先級高于全局@Styles。

    框架優(yōu)先找當前組件內(nèi)的@Styles,如果找不到,則會全局查找。

使用場景

以下示例中演示了組件內(nèi)@Styles和全局@Styles的用法。

  1. // 定義在全局的@Styles封裝的樣式
  2. @Styles function globalFancy () {
  3. .width(150)
  4. .height(100)
  5. .backgroundColor(Color.Pink)
  6. }
  7. @Entry
  8. @Component
  9. struct FancyUse {
  10. @State heightValue: number = 100
  11. // 定義在組件內(nèi)的@Styles封裝的樣式
  12. @Styles fancy() {
  13. .width(200)
  14. .height(this.heightValue)
  15. .backgroundColor(Color.Yellow)
  16. .onClick(() => {
  17. this.heightValue = 200
  18. })
  19. }
  20. build() {
  21. Column({ space: 10 }) {
  22. // 使用全局的@Styles封裝的樣式
  23. Text('FancyA')
  24. .globalFancy ()
  25. .fontSize(30)
  26. // 使用組件內(nèi)的@Styles封裝的樣式
  27. Text('FancyB')
  28. .fancy()
  29. .fontSize(30)
  30. }
  31. }
  32. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號