一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS Next V2 @Event

萬少 ? 來源:jf_22972444 ? 作者:jf_22972444 ? 2025-03-31 09:42 ? 次閱讀

HarmonyOS Next V2 @Event

背景

在上一節(jié)中,我們針對父子組件,講了關于傳遞數據的知識。我們了解到

  1. @Local 是管理自己內部的數據的,
  2. @Param 是負責接收父組件的數據的,而且子自己內部不能直接修改

按照一個組件最基本的功能, 既能接收外部傳入的數據 , 也要向外部傳遞數據 。那么 @Event 修飾符就是來解決這個問題的了。

介紹

@Event 是 子組件向父組件傳遞數據的技術,它只能用在 @ComponentV2 修改的組件上,其中的思想是

  1. 完成修改數據的操作,還是放在父組件內部,通過定義一個函數 func 來實現(xiàn)
  2. 在父組件調用子組件的時候,也順帶把這個函數 func 傳遞給子組件
  3. 子組件在內部 使用 @Event 來修飾 該函數,并且在需要的使用直接調用即可

父組件

  1. 定義內部數據 num
  2. 定義修改內部數據num的函數 func
  3. 使用子組件時,把numfunc都傳遞過去

@Entry
@ComponentV2
struct Index {
@Local num: number = 100
// 自己定義的函數 負責修改數據, 該函數也要傳遞給子組件
func = (unit: number) => {
this.num -= unit
}

build() {
Column() {
Button("父組件 修改" + this.num)
.onClick(() => {
this.num++
})
// 使用子組件,并且傳遞數據 和 傳遞函數
Son({ num: this.num, func: this.func })
.padding(10)
}
.width("100%")

}
}

## 子組件

1. 使用 `@Param` 接收父組件傳遞的 `num`
2. 使用`@Event` 接收父組件傳遞的函數 `func`
3. 定義點擊事件的處理函數 `onfunc`,內部直接調用父組件傳遞過來的函數

@ComponentV2
struct Son {
@Param num: number = 0
@Event func: (num: number) => void = () => {
}
onfunc = () => {
this.func(5)
}

build() {

Column() {
  Button(`子組件 ${this.num}`)

  Button("子組件修改父組件中的狀態(tài)")
    .onClick(this.onfunc)
}
.border({
  width: 1,
  style: BorderStyle.Dashed
})

}
}

## 流程

![image-20240723105343511](https://wsy996.obs.cn-east-3.myhuaweicloud.com/HarmonyOS%20Next%20V2%20%40Event/readme.assets/image-20240723105343511.png?x-image-process=style/style-8860)

## @Once

`@Once``@Param`作用類似,都可以表示接收父組件傳遞過來的數據,但是也存在區(qū)別

1. `@Once` 只會接收第一次父組件傳遞過來的數據,后續(xù)父組件的數據修改,不會同步到 `@Once`修改的變量上
2. `@Once` 需要和 `@Param` 一起搭配使用,因為 `@Param` 修飾的是父組件傳遞給子組件的變量,該變量不能直接被修改。所以`@Once`修飾的變量,也不能在子組件內部直接修改。

@ComponentV2
struct Son {
@Once @Param num: number = 0

build() {
Column() {
Button(子組件 ${this.num})
.onClick(() => {
this.num++ // 修改無效
})
}
.border({
width: 1,
style: BorderStyle.Dashed
})
}
}

@Entry
@ComponentV2
struct Index {
@Local num: number = 100

build() {
Column() {

Son({ num: this.num })
    .padding(10)
}
.width("100%")

}
}

![image-20240723110522686](https://wsy996.obs.cn-east-3.myhuaweicloud.com/HarmonyOS%20Next%20V2%20%40Event/readme.assets/image-20240723110522686.png?x-image-process=style/style-8860)

## 總結

1. `@Param` 表示父組件傳遞給子組件的數據,當父組件修改了,子組件會跟隨響應,同時子組件內部不能直接修改 `@Param`修飾的變量
2. `@Event` 表示子組件想要修改父組件數據的一種技術,它用來修改函數,該函數是由父組件定義和傳遞給子組件的
3. `@Once` 必須和 `@Param` 搭配使用,表示父組件傳遞過來的數據,只會第一次生效。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    79

    文章

    2005

    瀏覽量

    31800
收藏 人收藏

    評論

    相關推薦

    HarmonyOS Next MQTT演示

    HarmonyOS Next MQTT演示
    發(fā)表于 11-07 16:54

    ST-LINK/V2 ST-LINK/V2ST-LINK / V2在調試器/編程器STM8和STM32

    電子發(fā)燒友網為你提供(ti)ST-LINK/V2相關產品參數、數據手冊,更有ST-LINK/V2的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ST-LINK/V2真值表,ST-LINK/V2
    發(fā)表于 05-21 00:05

    Kinect v2(Microsoft Kinect for Windows v2 )配置移動電源解決方案

    Kinect v2配置移動電源解決方案Kinect v2如果用于移動機器人上(也可以是其他應用場景),為方便有效地展開后續(xù)工作,為其配置移動電源是十分必要的。一、選擇移動電源Kinect v2原裝
    發(fā)表于 01-05 14:51 ?5次下載
    Kinect <b class='flag-5'>v2</b>(Microsoft Kinect for Windows <b class='flag-5'>v2</b> )配置移動電源解決方案

    Kinect v2(Microsoft Kinect for Windows v2 )配置移動電源解決方案

    Kinect v2(Microsoft Kinect for Windows v2 )配置移動電源解決方案
    發(fā)表于 01-05 14:53 ?0次下載
    Kinect <b class='flag-5'>v2</b>(Microsoft Kinect for Windows <b class='flag-5'>v2</b> )配置移動電源解決方案

    學習V2更新板開源分享

    電子發(fā)燒友網站提供《學習V2更新板開源分享.zip》資料免費下載
    發(fā)表于 07-26 09:38 ?0次下載
    學習<b class='flag-5'>V2</b>更新板開源分享

    LED面板V2開源分享

    電子發(fā)燒友網站提供《LED面板V2開源分享.zip》資料免費下載
    發(fā)表于 08-02 09:37 ?2次下載
    LED面板<b class='flag-5'>V2</b>開源分享

    智能BMS V2開源設計

    電子發(fā)燒友網站提供《智能BMS V2開源設計.zip》資料免費下載
    發(fā)表于 08-08 11:38 ?17次下載
    智能BMS <b class='flag-5'>V2</b>開源設計

    Leaphy Motor shield V2開源

    電子發(fā)燒友網站提供《Leaphy Motor shield V2開源.zip》資料免費下載
    發(fā)表于 08-22 15:41 ?0次下載
    Leaphy Motor shield <b class='flag-5'>V2</b>開源

    NodeMCU V2 Amica V3 Lolin的盾牌

    電子發(fā)燒友網站提供《NodeMCU V2 Amica V3 Lolin的盾牌.zip》資料免費下載
    發(fā)表于 08-24 10:05 ?2次下載
    NodeMCU <b class='flag-5'>V2</b> Amica <b class='flag-5'>V</b>3 Lolin的盾牌

    悟空PCB徽章V2開源分享

    電子發(fā)燒友網站提供《悟空PCB徽章V2開源分享.zip》資料免費下載
    發(fā)表于 10-31 11:06 ?0次下載
    悟空PCB徽章<b class='flag-5'>V2</b>開源分享

    V2 控制器的操作原理

    V2 控制器的操作原理
    發(fā)表于 11-14 21:08 ?1次下載
    <b class='flag-5'>V2</b> 控制器的操作原理

    淘寶與華為合作將基于HarmonyOS NEXT啟動鴻蒙原生應用開發(fā)

    1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動鴻蒙原生應用開發(fā)。
    的頭像 發(fā)表于 01-26 16:14 ?1364次閱讀

    華為HarmonyOS NEXT 10月8日開啟公測

    華為宣布,萬眾矚目的HarmonyOS NEXT操作系統(tǒng)將于10月8日正式開啟公測,標志著這一創(chuàng)新力作即將與廣大用戶見面。HarmonyOS NEXT作為華為自研操作系統(tǒng)的最新成果,不
    的頭像 發(fā)表于 09-24 15:41 ?1186次閱讀
    華為<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>NEXT</b> 10月8日開啟公測

    HarmonyOS Next V2 @Local 和@Param

    HarmonyOS Next V2 @Local 和@Param @Local 背景 @Local 是 harmony 應用開發(fā)中的 v2 版本中 對標**@State**的狀態(tài)管理修
    的頭像 發(fā)表于 04-02 18:27 ?202次閱讀
    <b class='flag-5'>HarmonyOS</b> <b class='flag-5'>Next</b> <b class='flag-5'>V2</b> @Local 和@Param

    HarmonyOS Next V2 @Monitor 和@Computed

    HarmonyOS Next V2 @Monitor 和@Computed @Monitor 介紹 @Monitor 是狀態(tài)把管理 V2 版本中的用于監(jiān)聽狀態(tài)變量修改的技術。 它可以直
    的頭像 發(fā)表于 04-02 18:26 ?173次閱讀