国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

OpenHarmony—淺析ETS開發狀態管理

系統 OpenHarmony
本文主要對于使用class定義復雜數據,以及跨組件傳值、修改數據根據官方文檔進行簡單解析。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://ost.51cto.com??

前言

本文主要是對于鴻蒙開發文檔 ETS 開發中的 UI狀態管理部分進行解讀和簡單的實踐,方便更快的切入開發工作,構建應用,對應文檔鏈接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-ui-state-mgmt-concepts-0000001169868220。

鴻蒙狀態管理簡介

首先引用開發文檔中的圖片,圖片中已經基本可以看出整個應用中的數據流動,非常全面。

華為鴻蒙開發文檔對于應用中狀態的管理提供了豐富且全面的接口(僅提供通俗理解,具體定義見文檔):

  • @State:用于定義應用管理的狀態,更像是React16.8之后的useState,方便代碼根據業務劃分邏輯,狀態定義僅支持class、number、boolean、string 及其組成的數組,并不允許object和any。
  • @Props:單項數據流,父組件傳遞子組件,直接使用this.屬性名向下傳遞數據,子組件使用此修飾器接收,推薦用于只渲染的數據用此定義。
  • @Link:雙向數據流,解決了vue中**emit**函數的功能,父組件用emit??函數的功能,父組件用向下傳遞數據,子組件使用此修飾器接收,推薦需要在子組件中修改父組件狀態的情況(即為類似于在vue中需要使用$emit)下使用。
  • @Consume和**@Provide**: 其中provide是生產者,consume是消費者,寫過react的開發者應該對此很熟悉,類似于react中的context上下文,這一對修飾器主要實現的是上層組件跨多層傳值給下層組件,并實現雙向綁定數據。
  • @Observed和**@ObjectLink**:其中@Observed用于修飾類,@ObjectLink用于在子組件中修飾已經被@Observed修飾的類對應的狀態(具體用法見下文),這一對修飾器主要解決的問題是,如果定義了一個包含多個對象(類)的數組,其中對象的屬性發生變化,能夠被應用監測到并更新視圖。
  • @Watch:在某一可被應用監測的狀態發生修改的時候,執行某個額外的動作。
  • AppStorage:
  1. 應用程序中的單例對象,由UI框架在應用程序啟動時創建,在應用程序退出時銷毀,為應用程序范圍內的可變狀態屬性提供中央存儲,簡單來說就類似于vuex/redux。
  2. 上述幾個狀態管理的修飾器,更多的是在同一個page中去使用,根據業務/頁面邏輯劃分組件,實現狀態管理,父子組件傳值,跨組件傳值等。
  3. 而AppStorage是在多頁面(page文件夾下有多個@Enter定義頁面)應用程序中用于跨頁面共享數據。
  4. 建議AppStorage的使用在有@Enter的組件中使用,其中的數據在組件樹中從頂部注入,對子組件來說只是一個父組件傳遞過來的狀態,保證子組件的職能單一,輸入輸出穩定,與外部數據解耦,保證復用性。

夢開始的地方(Typescript而非anyscript)

本文主要是對于復雜數據類型class的使用解讀,對于number/boolean/string暫不做解讀,請自行嘗試。

一切都是從class開始的:@State定義中明確表示只能class、number、boolean、string 及其組成的數組,并不允許object和any,所以對于復雜數據類型的定義就需要用到class,如下圖:

定義接口:

使用接口定義復雜數據(此處例子可以看出,用**new Month( )或者直接{ }**都是可以的)。

這里引用了官方文檔https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-rending-control-syntax-foreach-0000001149978669中的例子,根據本文檔中的例子可以看出,使用class可以定義復雜數據類型,并且其中Month8的屬性在任何地方改變都可以被observe到,calendar中使用數組方法改變數組也能被observe到,并且觸發重渲染

非常不推薦使用**any[ ]**的方式來定義復雜數據,這樣定義的數據不會被應用observe到,數組發生改變,不會引發視圖更新!

使用class定義的數據可以使用@Props和@Link向下傳遞數據,如下圖,在second組件中修改calendar是生效的

  • 將class定義的數據傳遞給子組件

  • 子組件雙向綁定改變狀態!

跨組件傳值(@Consume和@Provide)

類似于react中的context上下文實現跨組件傳值,上層組件的狀態可以直接傳給最下層組件,非常好用。

我們已經有了@Props和@Link解決了簡單的父子組件傳值,文檔同樣提供了跨組件傳值的方法,@Provide可以直接替換掉@State定義狀態,@consume可以在需要接收的子組件中拿到傳遞下來的狀態。

定義狀態:

使用并渲染,并嘗試改變,(其實傳給下一層還是下下層使用和效果上沒啥區別)。

當然傳給第三層也可以看一下效果:

渲染結果:

在子組件中修改數組。

在子組件中修改對象中的屬性。

在子組件中修改數組中的對象的屬性(此方法失敗,狀態改變了,但是并沒有渲染,這是有問題的),正確方法見下文。

神奇的@Observed和@ObjectLink

@Observed是用來修飾類的,能夠幫忙監測多層數據中的數據變化,官方文檔中已經給出了具體的使用方法,而且非常靈活,這一對修飾器主要解決的正是上述遺留問題,如何修改數組中的對象中的屬性,并能夠自動觸發重渲染。

使用@Observed:

使用@ObjectLink,這里主要是驗證用provider/link傳遞到下層的數據能否被修改。

看效果:

從上述案例可以看出:使用@Observed和@ObjectLink可以實現對比較復雜的數據最內部數據的修改,使用起來相對靈活。

總結

本文主要對于使用class定義復雜數據,以及跨組件傳值、修改數據根據官方文檔進行簡單解析,對于狀態管理還包括AppStorage、持久化數據以及環境變量的驗證,將會在下一篇文章中做出詳解,希望本篇文章能夠在一定程度上幫助初學ets的開發者快速掌握其開發方式。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2023-08-17 15:04:22

2022-05-20 10:56:54

AbilityeTS FA調用

2022-01-26 15:23:03

ArkUI開發鴻蒙

2022-05-24 15:06:57

AbilityeTS FA鴻蒙

2022-07-12 17:03:43

鴻蒙網絡請求庫

2022-01-07 09:56:16

鴻蒙HarmonyOS應用

2022-09-16 15:34:32

CanvasArkUI

2022-05-26 14:50:15

ArkUITS擴展

2023-03-13 15:03:05

鴻蒙ArkUI

2022-03-21 15:19:27

鴻蒙UI組件ets自定義

2022-08-12 19:13:07

etswifi連接操作

2022-04-24 14:56:53

容器組件StackTS

2022-04-06 11:27:05

harmonyeTS 開發NAPI開發

2012-05-14 09:42:06

微軟Windows 8

2022-05-10 10:53:55

日志組件鴻蒙

2022-06-16 15:07:06

布局結構app

2011-09-27 10:40:48

Ubuntu 11.1

2022-04-13 11:24:18

ETS開發HarmonyOS鴻蒙

2022-05-07 15:34:16

ETS低代碼應用

2009-08-10 14:48:39

ASP.NET組件設計
點贊
收藏

51CTO技術棧公眾號

青青青国内视频在线观看软件| 色综合亚洲欧洲| 成人久久18免费网站图片| 女海盗2成人h版中文字幕| 亚洲成人免费观看| 欧美视频在线播放一区| 国产一区二区你懂的| 欧美国产日韩免费| 涩涩网在线视频| 欧美一级二级三级蜜桃| 免费在线激情视频| 免费观看久久久4p| 人人爽久久涩噜噜噜网站| 瑟瑟视频在线看| 日韩欧美国产黄色| 欧美爱爱视频网站| 亚洲国产裸拍裸体视频在线观看乱了中文 | 中文字幕av久久| 天天综合天天| 欧美日韩精品| 亚洲欧美国产精品| 亚洲性生活网站| 久久99热国产| 国产精品日韩欧美大师| 伊人影院蕉久影院在线播放| 亚洲一二三区在线观看| avav在线看| 国产一区二区在线看| 精品乱色一区二区中文字幕| 青草久久视频| 欧美成人黄色小视频| 中文在线аv在线| 欧美一区二区视频在线观看2020| 国产精品视频一二三四区| 性娇小13――14欧美| 国产91露脸中文字幕在线| 欧美激情三区| 亚洲三级黄色在线观看| 538在线观看| 疯狂做受xxxx高潮欧美日本| 日本丰满少妇黄大片在线观看| 精品国产成人| 日本一欧美一欧美一亚洲视频| 欧美黑人巨大| 亚洲欧洲av色图| 日本在线аv| 91在线观看视频| 久青草视频在线播放| jvid福利写真一区二区三区| 国产一级精品aaaaa看| 久久超级碰碰| 中文字幕欧美日韩va免费视频| 国产精品99999| 亚洲欧美激情一区二区| 中文字幕av日韩精品| 久久99精品久久久久久国产越南| 国产盗摄视频在线观看| www.在线欧美| 国产毛片久久久久久国产毛片| 国产一区二区中文| 久久伊人资源站| 欧美日韩精品系列| 男女18免费网站视频| 日韩欧美有码在线| 精品麻豆一区二区三区| 日韩精品视频在线播放| 色综合亚洲图丝熟| 久久91亚洲人成电影网站| 国产精品一区2区3区| 亚洲一区二区日本| 狠狠入ady亚洲精品| 蜜桃网站成人| 成人短视频app| 国产成人在线色| 国产精品久久久久福利| 日韩免费高清| 2022国产精品| 日韩精品一二三四| 精品少妇在线视频| 色一情一乱一乱一91av| 国产福利小视频在线观看| 日韩欧美aaa| 国产成人免费精品| 国产大片精品免费永久看nba| 亚洲第一二三区| 欧美专区日韩视频| 亚洲国产日本| 日韩黄色片在线| 中文字幕精品三区| 色开心亚洲综合| 亚洲视频欧洲视频| 天堂网在线观看国产精品| 国产伦精品一区二区三区视频黑人| 亚洲欧美日韩精品一区二区 | 好看的日韩精品视频在线| 中文精品视频| 成人免费在线网| 亚洲色图一区二区三区| 91九色美女在线视频| 久久精品99无色码中文字幕| 欧美日韩xxxx| 91中文在线观看| 风间由美性色一区二区三区| 国产系列电影在线播放网址| 亚洲欧美综合精品久久成人| 五月天久久久| 欧美这里只有精品| 欧美性感一区二区三区| 暖暖在线中文免费日本| 国内精品久久久久久| 国产最新精品免费| 丁香视频免费观看| 日韩欧美国产综合在线一区二区三区| 91久久偷偷做嫩草影院电| 男女啪啪的视频| 亚洲国产aⅴ天堂久久| 在线观看h片| 国产欧美日韩专区发布| 91捆绑美女网站| 肉丝一区二区| 久久久精品久久久| 一本到12不卡视频在线dvd| 欧美aaa在线观看| 亚洲伊人色欲综合网| 超碰97国产精品人人cao| 国产日韩欧美91| 男女性色大片免费观看一区二区| h色视频在线观看| 欧美成人精品在线| 国产一区二区在线免费| 久久99精品久久久久久动态图| 日韩美女一级视频| 国产精品免费一区二区三区都可以| 精品亚洲国产成人av制服丝袜| 在线激情视频| 少妇精品久久久久久久久久| 久久久久综合网| 久久久久久一区二区三区四区别墅| 国产精品区一区二区三含羞草| 成人h动漫精品一区二区| 伊人影院在线播放| 国产成人精品最新| 中文字幕一区二区三区蜜月| 深夜日韩欧美| 黑鬼大战白妞高潮喷白浆| 亚洲国产精彩中文乱码av在线播放 | 美女视频黄免费的亚洲男人天堂| 亚洲国产裸拍裸体视频在线观看乱了中文| 91精品国产一区二区三密臀| 国产精品国产三级国产专播精品人 | 国产精品视频久久久| 国产毛片一区| lutube成人福利在线观看| 97久久天天综合色天天综合色hd| 欧美三级日本三级少妇99| 午夜在线播放视频欧美| 国产嫩草在线视频| 中文字幕日韩精品无码内射| www.色综合| 捆绑调教一区二区三区| 18加网站在线| 日韩中文字幕在线免费| 欧美激情视频网址| 久久免费视频一区| 成人在线超碰| 视频一区二区三区在线看免费看| 国产精品乱子乱xxxx| 精品国产三级电影在线观看| 国产传媒一区在线| 少妇精品导航| 校园春色欧美| 亚洲最新在线| 精品国产一区二区三区四区在线观看 | 黄色大片在线看| 国产精品一区二区av| 日韩一区二区三区视频在线观看| 狠狠色丁香久久综合频道 | 欧美丝袜丝交足nylons图片| 亚洲网站啪啪| 久草综合在线| 久久手机免费观看| 美女扒开大腿让男人桶| 国产一区二区三区精品久久久 | 成人黄色生活片| 欧美日韩一区二区三区视频| 国产精品18久久久| 风间由美一区二区av101| www日韩av| 精品成人私密视频| 国产欧美日韩在线看| 久久中文字幕av| 2020国产在线视频| 在线观看污视频| 久久91超碰青草是什么| 色婷婷精品久久二区二区蜜臂av | 欧美日韩在线观看一区二区| 国产精品久久| 136福利精品导航| 日本韩国福利视频| 91精品国产毛片武则天|