OpenHarmony定義元件重用樣式:@Styles裝飾器
如果每個元件的樣式都需要單獨設定,在開發過程中會出現大量程式碼在進行重複樣式設定,雖然可以複製貼上,但為了程式碼簡潔性和後續方便維護,我們推出了可以提煉公共樣式進行復用的裝飾器@Styles。
@Styles裝飾器可以將多條樣式設定提煉成一個方法,直接在元件宣告的位置呼叫。透過@Styles裝飾器可以快速定義並複用自定義樣式。用於快速定義並複用自定義樣式。
說明:
從API version 9開始,該裝飾器支援在ArkTS卡片中使用。
裝飾器使用說明
● @Styles方法不支援引數,反例如下。
// 反例: @Styles不支援引數 @Styles function globalFancy (value: number) { .width(value) }
● @Styles可以定義在元件內或全域性,在全域性定義時需在方法名前面新增function關鍵字,元件內定義時則不需要新增function關鍵字。
// 全域性 @Styles function functionName() { ... } // 在元件內 @Component struct FancyUse { @Styles fancy() { .height(100) } }
● 定義在元件內的@Styles可以透過this訪問元件的常量和狀態變數,並可以在@Styles裡透過事件來改變狀態變數的值,示例如下:
@Component struct FancyUse { @State heightValue: number = 100 @Styles fancy() { .height(this.heightValue) .backgroundColor(Color.Yellow) .onClick(() => { this.heightValue = 200 }) } }
● 元件內@Styles的優先順序高於全域性@Styles。 框架優先找當前元件內的@Styles,如果找不到,則會全域性查詢。
使用場景
以下示例中演示了元件內@Styles和全域性@Styles的用法。
// 定義在全域性的@Styles封裝的樣式 @Styles function globalFancy () { .width(150) .height(100) .backgroundColor(Color.Pink) } @Entry @Component struct FancyUse { @State heightValue: number = 100 // 定義在元件內的@Styles封裝的樣式 @Styles fancy() { .width(200) .height(this.heightValue) .backgroundColor(Color.Yellow) .onClick(() => { this.heightValue = 200 }) } build() { Column({ space: 10 }) { // 使用全域性的@Styles封裝的樣式 Text('FancyA') .globalFancy () .fontSize(30) // 使用元件內的@Styles封裝的樣式 Text('FancyB') .fancy() .fontSize(30) } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011554/viewspace-2986380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OpenHarmony自定義構建函式:@Builder裝飾器函式UI
- OpenHarmony裝飾指定自定義元件:@BuilderParam裝飾器元件UI
- 鴻蒙 NEXT 如何使用 @Styles 裝飾器來最佳化我的元件程式碼?鴻蒙元件
- 裝飾器函式函式
- web專案026-----裝飾器的定義Web
- 裝飾器,匿名函式函式
- PythonModule_openpyxl_styles樣式處理Python
- Django 常用的自定義裝飾器Django
- CSS層疊樣式表——定義樣式表CSS
- Python之函式裝飾器Python函式
- 函式物件、裝飾器、閉包函式函式物件
- ES 6 裝飾器與 React 高階元件React元件
- 4.1 定義和應用樣式
- [一、基本語法]4@Builder裝飾器:自定義構建函式UI函式
- python裝飾器2:類裝飾器Python
- 測開之函式進階· 第7篇《裝飾器裝飾類,通用裝飾器,有啥區別呢?》函式
- Chrome瀏覽器中checkbox的樣式定義無效Chrome瀏覽器
- 閉包函式,裝飾器詳解函式
- Python裝飾器探究——裝飾器引數Python
- 非佈局樣式-裝飾性屬性&CSS hackCSS
- Day10:函式與裝飾器函式
- Python函式裝飾器高階用法Python函式
- 13. 閉包函式與裝飾器函式
- 微信小程式--自定義radio元件樣式微信小程式元件
- UWP自定義ToggleButton控制元件的樣式控制元件
- EAS_WEB.設定控制元件樣式Web控制元件
- 怎麼樣去理解 Python 中的裝飾器Python
- JS裝飾器JS
- CSS 定義第二個li元素樣式CSS
- QFileDialog自定義樣式設定SetStytlesheet
- 自定義瀏覽器捲軸樣式瀏覽器
- [二、狀態管理]2管理元件擁有的狀態(4)@Provide裝飾器和@Consume裝飾器:與後代元件雙向同步元件IDE
- 【Flask】路由裝飾器、路徑傳參、自定義路由轉換器Flask路由
- qt自定義控制元件樣式02-QSpinBoxQT控制元件
- 使用 TypeScript 裝飾器裝飾你的程式碼TypeScript
- Python 裝飾器裝飾類中的方法Python
- css樣式分類、定義、優先順序CSS
- Python 裝飾器Python