2018-11-28react精華

問題一:當你調(diào)用setState時伺糠,發(fā)生了什么事?

當調(diào)用setState時略贮,react做的第一件事就是將傳遞給setState 的對象合并到組件的當前狀態(tài)蕴忆,這將啟動一個叫和解(reconciliation)的過程,和解的最終目的是以最有效的方式慰丛,根據(jù)這個新的狀態(tài)來更新UI卓囚,為此react將構建一個新的react元素樹(可以理解為UI的對象表示)

一旦有了這個樹,為了弄清UI如何響應新的狀態(tài)而改變诅病,react會將這個新樹與上一元素樹對比(diff)哪亿;

問題二:在react中elelment和component有什么區(qū)別。

簡單的說睬隶,一個react element描述了你想在屏幕上看到什么锣夹,換個說法,一個react element是一些UI的對象表示苏潜。

一個react component是一個函數(shù)或是一個類银萍。它可以接受輸入并返回一個react component(通常是通過jsx,被轉化成一個create Element調(diào)用)恤左。

問題三:什么時候在功能組件上使用類組件贴唇?

如果你的組件具有狀態(tài)或生命周期方法搀绣,請使用類組件,否則請用功能組件戳气。

問題四:什么是react的refs链患,為什么他們很重要?

refs就像是一個逃生艙口瓶您,允許你直接訪問dom元素或組件實例麻捻。為了使用他們,您可以向組件添加一個refs屬性呀袱,該屬性的值是一個回調(diào)函數(shù)贸毕,它將接受底層的dom元素或組件的已掛載實例,作為其第一個參數(shù):

class UnControlledForm extends Component{ handleSubmit = () => { console.log("Input Value: ",this.input.value) } render () {return( this.input = input} /> Submit ) }}

以上注意到我們的輸入字段有一個ref屬性夜赵,其值是一個函數(shù)明棍,該函數(shù)接收我們放在實例上的實際的dom元素,以便在handleSubmit內(nèi)部訪問它寇僧。經(jīng)常被誤解的是:您需要使用類組件才能使用ref摊腋,但ref也可以通過利用javascript中的閉包與功能組件一起使用。

問題五:react中的keys是什么嘁傀?為什么他們很重要兴蒸?
keys是什么?幫助react跟蹤那些項目已更改心包,添加或從列表中刪除类咧。
return(

<ul>

? ? ? {this.state.todoItems.map(({task, uid}) => {

return<li key={uid}>{task}</li>

? ? ? })}

</ul>

? )

每個keys在兄弟元素之間獨一無二的馒铃,我們已經(jīng)談過幾次關于和解(reconciliation)的過程蟹腾,而且這個和解過程中的一部分正在執(zhí)行一個新的元素樹與最前一個的差異,keys使處理列表時更加高效区宇,因為react可以使用子元素上的keys快速知道元素是新的還是在比較樹時才被移動娃殖。

而且keys不僅使這個過程更有效率,而且沒有keys议谷,react不知道那個本地狀態(tài)對應于移動中的哪個項目炉爆。所以在map中的時候,不應忽略keys.

問題六:看下面的代碼: 如果您在?下創(chuàng)建了一個 React 元素卧晓,?的組件定義將如何芬首?

如果你不熟悉渲染回調(diào)模式,這將看起來有點奇怪逼裆,在這種模式下郁稍,一個組件接收一個函數(shù)作為它的child。注意上面包含在標簽內(nèi)的內(nèi)容胜宇,?Twitter?組件的 child 是一個函數(shù)耀怜,而不是你曾經(jīng)習以為常的一個組件恢着。 這意味著在實現(xiàn)?Twitter?組件時,我們需要將?props.children?作為一個函數(shù)來處理财破。

importReact, {Component,PropTypes} from'react'importfetchUser from'twitter'classTwitterextendsComponent{ state = { user:null, } static propTypes = { username:PropTypes.string.isRequired, } componentDidMount () { fetchUser(this.props.username) .then((user) =>this.setState({user})) } render () {returnthis.props.children(this.state.user) }}

值得注意的是:正如我上邊提到的掰派,我通過調(diào)用它并傳遞給user來把props.children處理為一個函數(shù)。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末左痢,一起剝皮案震驚了整個濱河市靡羡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俊性,老刑警劉巖亿眠,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異磅废,居然都是意外死亡纳像,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門拯勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟趾,“玉大人,你說我怎么就攤上這事宫峦〔砻保” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵导绷,是天一觀的道長犀勒。 經(jīng)常有香客問我,道長妥曲,這世上最難降的妖魔是什么贾费? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮檐盟,結果婚禮上褂萧,老公的妹妹穿的比我還像新娘。我一直安慰自己葵萎,他們只是感情好导犹,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羡忘,像睡著了一般谎痢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卷雕,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天节猿,我揣著相機與錄音,去河邊找鬼爽蝴。 笑死沐批,一個胖子當著我的面吹牛纫骑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播九孩,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼先馆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躺彬?” 一聲冷哼從身側響起煤墙,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宪拥,沒想到半個月后仿野,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡她君,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年脚作,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缔刹。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡球涛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出校镐,到底是詐尸還是另有隱情亿扁,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布鸟廓,位于F島的核電站从祝,受9級特大地震影響,放射性物質發(fā)生泄漏引谜。R本人自食惡果不足惜牍陌,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煌张。 院中可真熱鬧呐赡,春花似錦、人聲如沸骏融。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽档玻。三九已至,卻和暖如春茫藏,著一層夾襖步出監(jiān)牢的瞬間误趴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工务傲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凉当,地道東北人枣申。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像看杭,于是被迫代替她去往敵國和親忠藤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

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

  • 作為一個合格的開發(fā)者楼雹,不要只滿足于編寫了可以運行的代碼模孩。而要了解代碼背后的工作原理;不要只滿足于自己的程序...
    六個周閱讀 8,441評論 1 33
  • React.js 小書學習 之 【使用 JSX 描述 UI 信息】 從 JSX 到頁面 過程圖解:JSX 到頁面過...
    zdlucky閱讀 1,279評論 0 20
  • 3. JSX JSX是對JavaScript語言的一個擴展語法, 用于生產(chǎn)React“元素”谴供,建議在描述UI的時候...
    pixels閱讀 2,823評論 0 24
  • 以下內(nèi)容是我在學習和研究React時块茁,對React的特性、重點和注意事項的提取桂肌、精練和總結龟劲,可以做為React特性...
    科研者閱讀 8,232評論 2 21
  • 嘗試泡腳,被水溫嚇了一跳轴或。 不過調(diào)節(jié)好好水溫后昌跌,僅憑塑料水桶也能帶來微微出汗的效果哈。
    沼澤地里的困獸閱讀 224評論 0 0