React組件開發(fā)小記(二)—— React的數(shù)據(jù)

???????剛從JQ轉(zhuǎn)向React進行開發(fā)的時候巨朦,領(lǐng)導(dǎo)和我說了一句話 “React組件的數(shù)據(jù)冠王,是誰持有赶撰,誰消費”。其實當(dāng)時并不明白這句話什么意思≈梗現(xiàn)在對照J(rèn)Q豪娜,把理解寫下來。有錯漏請看官指出哟楷。
???????React中最重要的兩個概念就是props和state侵歇。props是指父組件傳遞下來的屬性(props可以是一個任意類型的數(shù)據(jù)),state是組件本身自我管理的狀態(tài)吓蘑。組件如何進行自我管理state惕虑,還有如何利用props坟冲,就成了初步使用react的第一個問題。
???????首先必須明確的一點是在React中溃蔫,數(shù)據(jù)只能單向的從父組件中傳遞給子組件健提。如果子組件想要把數(shù)據(jù)傳遞給父組件,只能通過props回調(diào)伟叛。即 props是一個方法私痹,子組件調(diào)用這個方法,可以把想要給父組件的數(shù)據(jù)通過參數(shù)傳回去统刮。
???????明白了以上三點紊遵,開始這篇的話題。

???????現(xiàn)在有個場景侥蒙。參照antd的Table組件暗膜,如下圖:

table.png

???????頁面首次加載的時候,首先請求接口數(shù)據(jù)渲染表格鞭衩。假設(shè)左上角的按鈕修改了數(shù)據(jù)学搜,會重新渲染表格。
???????組件劃分是:
???????頁面上有組件TableContainer论衍,TableContainer包含左上角按鈕瑞佩,和Table組件(Button與Table未拆分)。
???????剛開發(fā)這個表格坯台,我想的方案是:在頁面componentWillMount中請求接口炬丸,將返回的數(shù)據(jù)通過props傳遞下去。存入子組件的state蜒蕾。Table渲染state數(shù)據(jù)御雕。點擊按鈕后重新請求接口,將數(shù)據(jù)更新state滥搭。
???????這個思維方式被領(lǐng)導(dǎo)批評為仍然是JQ思想。按照我當(dāng)時JQ的想法捣鲸,按鈕的事件中寫好接口瑟匆,然后接收數(shù)據(jù)。數(shù)據(jù)和頁面無關(guān)栽惶。

???????比較合適的方案:
???????按鈕組件和Table分離愁溜。數(shù)據(jù)是頁面的,因此由頁面處理外厂。Button組件只負(fù)責(zé)通知頁面要請求數(shù)據(jù)冕象,具體這個發(fā)送等操作,還是由頁面執(zhí)行汁蝶。Table組件只負(fù)責(zé)渲染渐扮。這就是所謂的“誰持有论悴,誰消費”。
???????首次請求數(shù)據(jù)墓律,將數(shù)據(jù)存入頁面的state中膀估,在render中讀取state,通過props一層層傳遞給Table組件耻讽。同時定義好一個請求數(shù)據(jù)的方法(假設(shè)方法名為getTableData)察纯。將這個方法通過props傳遞給按鈕組件。Button的click事件中調(diào)用getTableData方法针肥。click事件被觸發(fā)饼记,則數(shù)據(jù)重新被請求,更新頁面state慰枕。傳下來使table數(shù)據(jù)刷新具则。
???????第二種方案中,數(shù)據(jù)只在頁面上操作捺僻,子組件只需要對數(shù)據(jù)進行渲染乡洼,不操作數(shù)據(jù)。即:所有的數(shù)據(jù)處理匕坯,都只在容器組件中處理束昵。
???????至于為什么這么做,下一篇(你為什么需要componentShouldUpdate葛峻?)中解釋锹雏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市术奖,隨后出現(xiàn)的幾起案子礁遵,更是在濱河造成了極大的恐慌,老刑警劉巖采记,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佣耐,死亡現(xiàn)場離奇詭異,居然都是意外死亡唧龄,警方通過查閱死者的電腦和手機兼砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來既棺,“玉大人讽挟,你說我怎么就攤上這事⊥杳幔” “怎么了耽梅?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵胖烛,是天一觀的道長眼姐。 經(jīng)常有香客問我诅迷,道長,這世上最難降的妖魔是什么妥凳? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任竟贯,我火速辦了婚禮,結(jié)果婚禮上逝钥,老公的妹妹穿的比我還像新娘屑那。我一直安慰自己,他們只是感情好艘款,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布持际。 她就那樣靜靜地躺著,像睡著了一般哗咆。 火紅的嫁衣襯著肌膚如雪蜘欲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天晌柬,我揣著相機與錄音姥份,去河邊找鬼。 笑死年碘,一個胖子當(dāng)著我的面吹牛澈歉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屿衅,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼埃难,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涤久?” 一聲冷哼從身側(cè)響起涡尘,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎响迂,沒想到半個月后考抄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡蔗彤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年川梅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幕与。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镇防,靈堂內(nèi)的尸體忽然破棺而出啦鸣,到底是詐尸還是另有隱情,我是刑警寧澤来氧,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布诫给,位于F島的核電站香拉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏中狂。R本人自食惡果不足惜凫碌,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胃榕。 院中可真熱鬧盛险,春花似錦、人聲如沸勋又。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楔壤。三九已至鹤啡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹲嚣,已是汗流浹背递瑰。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隙畜,地道東北人抖部。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像禾蚕,于是被迫代替她去往敵國和親您朽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南换淆,這只是我在學(xué)習(xí)過程中的一些閱讀筆記哗总,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,843評論 1 18
  • 做React需要會什么? react的功能其實很單一县习,主要負(fù)責(zé)渲染的功能涮母,現(xiàn)有的框架,比如angular是一個大而...
    蒼都閱讀 14,769評論 1 139
  • 目前躁愿,react組件有三種寫法叛本,分別是es5的createClass寫法,es6的class寫法彤钟,以及statel...
    ZoomFunc閱讀 1,681評論 0 1
  • 只幾天一直在給小侄女們讀書来候,雖然斷斷續(xù)續(xù)。通過一本書一個故事就能反應(yīng)出三個孩子許多不同逸雹。比如注意力营搅,比如反應(yīng)能力云挟,...
    木木sani閱讀 205評論 0 0
  • 《山河故人》——前塵,此刻转质,未來 1999年园欣,澳門回歸,沈濤在大年夜里跳傘舞休蟹,張晉生買了一輛德國產(chǎn)的進口汽車沸枯,并買...
    冬不拉lala閱讀 687評論 0 2