鴻蒙學習筆記(4)-Radio組件、彈框組件、組件內部狀態、工具類

一、Radio組件

(1)簡述

創建單選框組件。接收一個RadioOptions類型對象參數。

名稱類型必填說明
valuestring

當前單選框的值。

groupstring

當前單選框的所屬群組名稱,相同group的Radio只能有一個被選中。

indicatorType12+RadioIndicatorType

配置單選框的選中樣式。未設置時按照RadioIndicatorType.TICK進行顯示。

indicatorBuilder12+CustomBuilder

配置單選框的選中樣式為自定義組件。自定義組件與Radio組件為中心點對齊顯示。indicatorBuilder設置為undefined時,按照RadioIndicatorType.TICK進行顯示。

(2)注意事項?

1、group屬性可以使得單選框實現只能單選或者都可以選,group屬性設置一樣時,只允許存在一個勾選狀態。

2、除支持通用事件以外,還支持onChange事件,單選框選中狀態改變時觸發回調。

3、除支持通用屬性意外,還支持radioStyle,設置單選框選中狀態和非選中狀態的樣式;checked,設置單選框的選中狀態;contentModifier,定制Radio內容區的方法,在Radio組件上,定制內容區的方法,modifier: 內容修改器,開發者需要自定義class實現ContentModifier接口。

4、RadioStyle對象說明:checkedBackgroundColor,開啟狀態底板顏色;uncheckedBorderColor,關閉狀態描邊顏色;indicatorColor,開啟狀態內部圓餅顏色。

二、彈框組件

各種彈窗組件使用網址:彈窗-ArkTS組件-ArkUI(方舟UI框架)-應用框架 - 華為HarmonyOS開發者

(1)日歷彈框組件

1、CalendarPicker,CalendarPicker(options?: CalendarOptions),日歷選擇器組件,提供下拉日歷彈窗,可以讓用戶選擇日期,得到的時間包括那年月日和時分秒,如若獲取了當前時間得到的時分秒是需要是轉化+8小時才是此時的時間。

2、除支持通用事件,還支持事件:onChange

onChange(callback: (value: Date) => void)

選擇日期時觸發該事件。

3、CalendarOptions對象說明:

名稱類型必填說明
hintRadiusnumber |?Resource

描述日期選中態底板樣式。

默認值:底板樣式為圓形。

說明:

hintRadius為0,底板樣式為直角矩形。hintRadius為0 ~ 16,底板樣式為圓角矩形。hintRadius>=16,底板樣式為圓形。

selectedDate

設置選中項的日期。選中的日期未設置或日期格式不符合規范則為默認值。

默認值:當前系統日期。

(2)日期彈框組件

1、TimePicker,TimePicker(options?: TimePickerOptions),時間選擇組件,根據指定參數創建選擇器,支持選擇小時及分鐘,默認以24小時的時間區間創建滑動選擇器。

2、TimePickerOptions對象說明:

名稱類型必填說明
selectedDate

設置選中項的時間。

默認值:當前系統時間

從API version 10開始,該參數支持$$雙向綁定變量。

元服務API:?從API version 11開始,該接口支持在元服務中使用。

format11+TimePickerFormat

指定需要顯示的TimePicker的格式。

默認值:TimePickerFormat.HOUR_MINUTE

元服務API:?從API version 12開始,該接口支持在元服務中使用。

3、TimePickerFormat11+枚舉說明

名稱說明
HOUR_MINUTE按照小時和分顯示。
HOUR_MINUTE_SECOND按照小時、分鐘和秒顯示。

4、除通用屬性外的常用屬性:

名稱說明

useMilitaryTime(value: boolean

設置展示時間是否為24小時制。

disappearTextStyle

設置所有選項中最上和最下兩個選項的文本顏色、字號、字體粗細。

textStyle

設置所有選項中除了最上、最下及選中項以外的文本顏色、字號、字體粗細。

selectedTextStyle

設置選中項的文本顏色、字號、字體粗細。

三、 組件內部狀態

(1)@state

1、在組件進行數據動態渲染的時候,需要用到組件內部狀態。用@state裝飾器定義的變量代表組件的內部狀態,只要這個變量發生變化,頁面ui會進行重新渲染。

2、@state來修飾變量,必須要求變量進行初始化,不能為空值。

3、@state來修飾變量,可以支持object、class、string、boolean等類型。如果出現嵌套類型的數據結構,嵌套對象的屬性發生變化,頁面無法檢測更新。

4、標記為@state的變量默認都是私有變量,只能在組件中訪問。

5、關于復雜數據類型的定義:

5.1 在viewmodel目錄下定義約束模型,再引入到需要的組件或頁面中:

5.2?直接在需要的組件或頁面中定義對象類型:

6、頁面上要用到的數據,并不是所有的數據都需要大家采用@state來修飾,有些變量無需采用@state的,只需要也買你加載一次,直接定義就可以。?

(2)父子組件通信

在鴻蒙開發中,涉及到父子組件通信我們需要用到兩個裝飾器,分別是@prop和@link。

(2.1)@Prop

單向數據通信:父組件傳遞值給子組件,子組件可以使用這個數據進行渲染,但是修改子組件的傳遞值,父組件是無法同步的。

注意:

1、@Prop只能在@component組件中使用,不能再@entry組件中使用。

2、@Prop來定義變量,可以默認不初始化,代表接受外來數據,即父組件數據。

3、@Prop來定義數據,可以進行修改,但是只能影響本組件,無法同步給父組件。

(2.2)@Link

雙向數據通信:父組件傳遞值給子組件,子組件可以修改傳遞過去的這個值,同步將內容修改后傳遞回父組件。

注意:

1、@Link只能在@component組件中使用,不能在@entry組件中使用。

2、@Link來定義變量,可以默認不初始化,代表接受外來數據,即父組件數據。

3、@Link來定義數據,可以進行修改,無論是父組件還是子組件,數據都是同步變化的。

傳參方式:

1、子組件中定義一個變量,這個變量可以默認初始化,也可以接受父組件傳遞的值。

四、日期格式化工具

傳遞日期進行格式化工具:

// 定義一個配置類 Opt,用于存儲日期時間各部分的字符串值
export class Opt {yy: string = ''; // 年(完整年份,如 "2025")mm: string = ''; // 月(補零,如 "03")dd: string = ''; // 日(補零,如 "26")HH: string = ''; // 時(24小時制,補零,如 "14")MM: string = ''; // 分(補零,如 "05")SS: string = ''; // 秒(補零,如 "09")
}/*** 格式化日期時間* @param timestamp 時間戳(毫秒)* @param format 格式字符串,支持以下占位符:*   - y+ 年(如 yy 輸出 25,yyyy 輸出 2025)*   - m+ 月(如 m 輸出 3,mm 輸出 03)*   - d+ 日(如 d 輸出 5,dd 輸出 05)*   - H+ 時(24小時制)*   - M+ 分*   - S+ 秒* @returns 格式化后的日期時間字符串*/
export function formatData(timestamp: number, format: string) {let res: string = ''; // 存儲格式化后的結果try {// 1. 將時間戳轉換為 Date 對象const date = new Date(timestamp);// 2. 準備日期時間各部分的字符串值(自動補零)const opt: Opt = {yy: date.getFullYear().toString(), // 年(不補零,如 "2025")mm: (date.getMonth() + 1).toString().padStart(2, '0'), // 月(補零,如 "03")dd: date.getDate().toString().padStart(2, '0'), // 日(補零,如 "05")HH: date.getHours().toString().padStart(2, '0'), // 時(補零,如 "14")MM: date.getMinutes().toString().padStart(2, '0'), // 分(補零,如 "05")SS: date.getSeconds().toString().padStart(2, '0'), // 秒(補零,如 "09")};// 3. 使用正則表達式替換格式字符串中的占位符res = format.replace(/y+/g, opt.yy)// 替換年份(支持 yyyy 或 yy).replace(/m+/g, opt.mm)// 替換月份(支持 mm 或 m).replace(/d+/g, opt.dd)// 替換日期(支持 dd 或 d).replace(/H+/g, opt.HH)// 替換小時(支持 HH 或 H).replace(/M+/g, opt.MM)// 替換分鐘(支持 MM 或 M).replace(/S+/g, opt.SS); // 替換秒(支持 SS 或 S)} catch (error) {// 4. 錯誤處理(如傳入非法時間戳)console.error('ERROR formatData:', error);}// 返回格式化后的字符串return res;
}

?使用時,先導入在使用(標紅處獲取格式):

五、 隨機日期和氣溫生成工具

String.protptype.padStart():padStart()方法是用另一個字符串填充當前字符串(如果需要會重復填充),直到達到給定的長度,填充是從當前字符串的開頭開始的。

initData():在頁面加載時,調用?initData()?從后端獲取數據,在開發階段,可以用?initData()?生成假數據用于測試:

(1)隨機日期

export function getRandomCurrentMonth(){let today=new Date()const year=today.getFullYear()const month=today.getMonth()+1let minDay=1;let maxDay=new Date(year,month+1,0).getDate()let randomDay=Math.floor(Math.random()*(maxDay-minDay+1))+minDayreturn `${year}-${String(month).padStart(2,'0')}-${String(randomDay).padStart(2,'0')}`
}

(2)隨機溫度?

export function getRandomTemperature(): string {const minTemp = 10; // 最低溫度const maxTemp = 35; // 最高溫度const randomTemp = Math.random() * (maxTemp - minTemp) + minTemp; // 生成隨機溫度return randomTemp.toFixed(1);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74301.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

111.在 Vue 3 中使用 OpenLayers 實現動態曲線流動圖(類似 ECharts 遷徙狀態)

在數據可視化領域,ECharts 提供的 遷徙圖(流動圖) 是一種直觀展示數據流動的方式,如人口遷徙、物流流向等。我們可以使用 OpenLayers 結合 Vue 3 來實現類似的 動態曲線流動圖,從而在 Web GIS 項目中提供更生動的可視化…

全棧開發項目實戰——AI智能聊天機器人

文章目錄 一:項目技術棧和代碼分析1.前端技術棧(1)HTML(index.html):(2)CSS(styles.css):(3)JavaScript(scrip…

無人機機體結構設計要點與難點!

一、無人機機體結構設計要點 1. 類型與應用場景匹配 固定翼無人機:需優化機翼升阻比,采用流線型機身降低氣動阻力(如大展弦比機翼設計)。 多旋翼無人機:注重輕量化框架和對稱布局(如四軸/六軸碳纖維機…

eBest AI智能報表:用自然語言對話解鎖企業數據生產力

告別傳統數據迷宮,讓業務洞察"開口即得" 【數據價值被困在系統迷宮中】? 在數字化轉型的深水區,80%的企業正被數據孤島和越來越多,也越來越復雜的系統所困擾。 ? 操作黑洞:用戶平均通過6次篩選和層級跳轉才能觸達目標…

Linux 編程環境

文章目錄 VimGCCGDBMake Vim Vim GCC GCC(GNU Compiler Collection)是一款編譯語言編譯器,此項目最早由GNU計劃的發起者理查德 斯托曼開始實施。第一版GCC于1987年發行,最初的GCC代表GNU C Compiler,即GNU的C語言編…

JSONP跨域訪問漏洞

一、漏洞一:利用回調GetCookie <?php$conn new mysqli(127.0.0.1,root,root,learn) or die("數據庫連接不成功"); $conn->set_charset(utf8); $sql "select articleid,author,viewcount,creattime from learn3 where articleid < 5"; $result…

JuiceFS vs HDFS,最簡單的 JuiceFS 入門

你好,我是 shengjk1,多年大廠經驗,努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注!你會有如下收益: 了解大廠經驗擁有和大廠相匹配的技術等希望看什么,評論或者私信告訴我! 文章目錄 一、背景二、JuiceFS 入門2.1 核心特性2.2 JuiceFS 架構2.3 JuiceFS 如何存儲文…

音頻進階學習二十四——IIR濾波器設計方法

文章目錄 前言一、濾波器設計要求1.選頻濾波器種類2.通帶、阻帶、過度帶3.濾波器設計指標 二、IIR濾波器的設計過程1.設計方法2.常見的模擬濾波器設計1&#xff09;巴特沃斯濾波器&#xff08;Butterworth Filter&#xff09;2&#xff09;切比雪夫濾波器&#xff08;Chebyshev…

vue3源碼分析 -- runtime

runtime運行時&#xff0c;主要在packages/runtime-core目錄下&#xff0c;核心提供了h、render等函數。在理解它們之前&#xff0c;我們需要了解下HTML DOM 樹和虛擬 DOM等概念 HTML DOM 樹 通過節點構成的一個樹形結構&#xff0c;我們稱為HTML DOM節點樹。DOM 文檔里面做了…

清明假期在即

2025年4月2日&#xff0c;6~22℃&#xff0c;一般 遇見的事&#xff1a;這么都是清明出去玩&#xff1f;你們不掃墓的么。 感受到的情緒&#xff1a;當精力不放在一個人身上&#xff0c;你就會看到很多人&#xff0c;其實可以去接觸的。 反思&#xff1a;抖音上那么多不幸和幸…

tomcat 目錄結構組成

文章目錄 背景文件結構層級一些常用的路徑 背景 現在非常多的 java web 服務部署在 linux 服務器中&#xff0c;我們服務器中的 tomcat 會有各種文件路徑&#xff0c;看下它有哪些文件 文件結構層級 ├── bin/ # 核心腳本和啟動文件 ├── conf/ # …

多層內網滲透測試虛擬仿真實驗環境(Tomcat、ladon64、frp、Weblogic、權限維持、SSH Server Wrapper后門)

在線環境:https://www.yijinglab.com/ 拓撲圖 信息收集 IP地址掃描 確定目標IP為10.1.1.121 全端口掃描 訪問靶機8080端口,發現目標是一個Tomcat服務,版本

NOIP2010提高組.引水入城

*前置題目 901. 滑雪 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 310, INF 0x3f3f3f3f; const int dx[4] {0, -1, 0, 1}, dy[4] {1, 0, -1, 0};int n, m, h[N][N]; int f[N][N]; int ans;int dfs(i…

Share02-小小腳本大大能量

各位看官你們好&#xff0c;又是一篇共享知識點的文章&#xff0c;今天我們來聊一聊腳本在我們上位組態中的作用。各個廠家的上位軟件或者觸屏軟件都內嵌了腳本功能&#xff0c;有的是二次開發的固定指令格式&#xff0c;有的可以接收廣域的標準語言指令。它帶給我們更多的方便…

LangChain接入azureopenai步驟(2025年初)

背景&#xff1a; 為了快速且規范的實現ai應用&#xff0c;可使用LangChain框架&#xff0c;便于后期維護。雖然deepseek異軍突起&#xff0c;在終端用戶占有率很高&#xff0c;但是仔細查閱相關api接口&#xff0c;尤其是自有知識庫需要使用的文本向量化模型方面&#xff0c;o…

阿里云國際站代理商:模型訓練中斷數據丟失怎么辦?

定期保存訓練狀態&#xff1a;在訓練過程中&#xff0c;設定自動保存訓練狀態的頻率&#xff0c;將模型的參數、優化器狀態、訓練數據的中間結果等定期保存到存儲介質上。這樣&#xff0c;當中斷發生時&#xff0c;可以恢復到上次保存的狀態&#xff0c;避免訓練進度的損失。 …

C++17更新內容匯總

C17 是 C14 的進一步改進版本&#xff0c;它引入了許多增強特性&#xff0c;優化了語法&#xff0c;并提升了編譯期計算能力。以下是 C17 的主要更新內容&#xff1a; 1. 結構化綁定&#xff08;Structured Bindings&#xff09; 允許同時解構多個變量&#xff0c;從 std::tup…

2025年Axure RP9無法免費使用Axure Cloud的解決方案

解決方案 更換新賬號&#xff0c;換了一個郵箱注冊&#xff0c;再登陸&#xff0c;又會給你30天的試用期。 對&#xff0c;辦法就是換個郵箱注冊&#xff0c;又續上30天的試用期。

供應鏈中的的“四流合一”

在供應鏈中&#xff0c;物流、資金流、信息流、商流是共同存在的&#xff0c;商流、信息流和資金流的結合將更好的支持和加強供應鏈上、下游企業之間的貨物、服務往來&#xff08;物流&#xff09;。 一、商流 在供應鏈中&#xff0c;上下游供應商的資金鏈條均可被金融服務機構…

MonkeyDev 如何創建一個root級級別的app

前提條件:有越獄的手機,XCode中已經安裝了Monkeydev 1. 和普通應用一個創建一個ios的工程 2. 在App的TARGETS>build setting> 中設置Apple Development 3. 設置User-Defined的配置 CODE_SIGNING_ALLOWED = NO MonkeyDevBuildPackageOnAnyBuild = NO MonkeyDevClearUi…