從React到Flutter

自從去年底接觸flutter到現(xiàn)在欢揖,陸續(xù)在學(xué)習(xí)相關(guān)的一些基礎(chǔ)知識烈钞,具備React經(jīng)驗(yàn)對flutter的學(xué)習(xí)有很大幫助酗钞,官網(wǎng)也對ReactNative開發(fā)者有專門的說明,本文對此討論一下。

Component (React) vs Widget (Flutter)

在React中的Component概念在Flutter中對應(yīng)概念稱為Widget米同,都是為重用而生但金,也都分為有狀態(tài)和無狀態(tài)兩類,前者內(nèi)部維護(hù)state似枕,后者則是純渲染用的無狀態(tài)組件答憔。少了狀態(tài)維護(hù)和臟狀態(tài)判斷以決定是否需要重新render,無狀態(tài)組件自然輕量得多。

但React中無狀態(tài)組件就是一個單純的function,接收 props返回jsx瞻润,輕量到了極限,加上最新支持的hook楚午,function component已經(jīng)可以擁有自己的狀態(tài)信息就谜,完成本class component才具備的功能。而flutter中無狀態(tài)組件stateless widget是個抽象類隧甚,跟statefull widget同繼承自?Widget族吻,stateless widget從build方法生成Widget,stateful widget則是從createState返回的State調(diào)用build方法生成Widget。


1. Widget類圖

從上面圖1可以看到類圖繼承關(guān)系和幾個關(guān)鍵成員孤澎,注意上面兩類箭頭型将,空心箭頭表示繼承(is)福扬,線條箭頭表示成員關(guān)系(has)。

Element -> Component -> Instance (React) vs Widget -> Element->RenderObject(Flutter)

React中Element是個plain object,簡單輕量創(chuàng)建沒什么成本,且不可變颂砸,用來描述組件的基本信息,包含組件的類型信息(簡單的組件類型type就是字符串碰缔,比如 div, span;復(fù)雜的類型就是類或者方法)精续,Component描述根據(jù)傳入屬性如何生成jsx,而component的instance則是React內(nèi)部負(fù)責(zé)創(chuàng)建和銷毀,用戶不需要直接參與;

Flutter的Widget也是不可變對象,包含Widget的初始化屬性信息以及狀態(tài)信息(針對stateful widget),通過Widget的createElement方法可以創(chuàng)建Element對象抄瓦,該對象代表Widget對象作為渲染樹節(jié)點(diǎn)成員钙姊,存在Element的一個意義是煞额,因?yàn)閃idget不可變,則屬性信息不變時候Widget可重用逆日,對應(yīng)渲染樹上多個Element對象搪哪。Element的renderObject屬性返回的RenderObject對象則是真正用于UI渲染的對象,RenderObject子類通過override paint方法實(shí)現(xiàn)Widget的UI的繪制。

-----回家啦赘娄,下次繼續(xù)寫----

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市读拆,隨后出現(xiàn)的幾起案子擅憔,更是在濱河造成了極大的恐慌鸵闪,老刑警劉巖檐晕,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚌讼,居然都是意外死亡辟灰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門篡石,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芥喇,“玉大人,你說我怎么就攤上這事凰萨〖炭兀” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵胖眷,是天一觀的道長武通。 經(jīng)常有香客問我,道長珊搀,這世上最難降的妖魔是什么冶忱? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮境析,結(jié)果婚禮上囚枪,老公的妹妹穿的比我還像新娘。我一直安慰自己劳淆,他們只是感情好链沼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沛鸵,像睡著了一般括勺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天朝刊,我揣著相機(jī)與錄音耀里,去河邊找鬼。 笑死拾氓,一個胖子當(dāng)著我的面吹牛冯挎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咙鞍,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼房官,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了续滋?” 一聲冷哼從身側(cè)響起翰守,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疲酌,沒想到半個月后蜡峰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朗恳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年湿颅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥诫。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡油航,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怀浆,到底是詐尸還是另有隱情谊囚,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布执赡,位于F島的核電站镰踏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搀玖。R本人自食惡果不足惜余境,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灌诅。 院中可真熱鬧芳来,春花似錦、人聲如沸猜拾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挎袜。三九已至顽聂,卻和暖如春肥惭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背紊搪。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工蜜葱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耀石。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓牵囤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滞伟。 傳聞我的和親對象是個殘疾皇子揭鳞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 國慶后面兩天在家學(xué)習(xí)整理了一波flutter,基本把能擼過能看到的代碼都過了一遍梆奈,此文篇幅較長野崇,建議保存(star...
    Nealyang閱讀 4,338評論 1 17
  • 目錄 一、Flutter 為何使用Dart開發(fā)語言二亩钟、Flutter的UI系統(tǒng)1.特點(diǎn)2.架構(gòu)簡介2.1 Flut...
    十拿九穩(wěn)啦閱讀 3,632評論 3 28
  • 3. JSX JSX是對JavaScript語言的一個擴(kuò)展語法乓梨, 用于生產(chǎn)React“元素”,建議在描述UI的時候...
    pixels閱讀 2,806評論 0 24
  • Flutter是如何使用Widgets径荔、Elements和RenderObjects來實(shí)現(xiàn)如此令人驚艷的視覺效果的...
    Rreply閱讀 3,874評論 1 13
  • HTML模版 之后出現(xiàn)的React代碼嵌套入模版中督禽。 1. Hello world 這段代碼將一個一級標(biāo)題插入到指...
    ryanho84閱讀 6,221評論 0 9