React 學(xué)習(xí)筆記

React 筆記

一得问、JSX 語(yǔ)法 疑難點(diǎn)
class => className
for => htmlFor
組件 大寫(xiě)開(kāi)頭
js表達(dá)式 {} 子組件可以作為表達(dá)式
注釋 {/注釋/} or <Nav /注釋/ >
自定義屬性 data-
<Component {...props} />
style 屬性: { CSS 屬性構(gòu)成的 JS 對(duì)象}
onChange 事件: 不需要 onBlur 去觸發(fā)
表單的表現(xiàn)差異大
dangerouslySetInnerHTML 傳入一個(gè)對(duì)象:{ __html: 相當(dāng)于元素的 innerHTML}

style 接受一個(gè)對(duì)象,這個(gè)對(duì)象里面是這個(gè)元素的 CSS 屬性鍵值對(duì)
<h1 style={{fontSize: '12px', color: 'red'}}>React.js 小書(shū)</h1>

二软免、組件
基本概念:
props 組件屬性
state 組件可看成一個(gè)“狀態(tài)機(jī)”宫纬,state組件當(dāng)前狀態(tài),通過(guò)this.setState()方法更新設(shè)置state膏萧,將調(diào)用render重新渲染UI
劃分狀態(tài)數(shù)據(jù)(什么數(shù)據(jù)屬性可以當(dāng)做狀態(tài):)
無(wú)狀態(tài)組件

this.setState({}) 不會(huì)馬上更新漓骚,將參數(shù){}放入一個(gè)更新隊(duì)列,
this.setState(fn) 異步回調(diào)寫(xiě)法榛泛,參數(shù)為一個(gè)函數(shù)
一個(gè)事件循環(huán)只會(huì)渲染一次蝌蹂,一個(gè)事件循環(huán)中多個(gè)setState會(huì)合并后再渲染

配置組建 props

默認(rèn)配置 defaultProps
static defaultProps = {
likedText: '取消',
unlikedText: '點(diǎn)贊'
}

總結(jié)

  1. 為了使得組件的可定制性更強(qiáng),在使用組件的時(shí)候曹锨,可以在標(biāo)簽上加屬性來(lái)傳入配置參數(shù)孤个。

  2. 組件可以在內(nèi)部通過(guò) this.props 獲取到配置參數(shù),組件可以根據(jù) props 的不同來(lái)確定自己的顯示形態(tài)沛简,達(dá)到可配置的效果齐鲤。

  3. 可以通過(guò)給組件添加類(lèi)屬性 defaultProps 來(lái)配置默認(rèn)參數(shù)斥废。

  4. props 一旦傳入,你就不可以在組件內(nèi)部對(duì)它進(jìn)行修改给郊。但是你可以通過(guò)父組件主動(dòng)重新渲染的方式來(lái)傳入新的 props牡肉,從而達(dá)到更新的效果

  5. 受控組件的概念,React.js 中的 <input /> 丑罪、<textarea />荚板、<select /> 等元素的 value 值如果是受到 React.js 的控制凤壁,那么就是受控組件吩屹。

  6. 組件之間使用 props 通過(guò)父元素傳遞數(shù)據(jù)的技巧

將組件渲染,并且構(gòu)造 DOM 元素然后塞入頁(yè)面的過(guò)程稱(chēng)為組件的掛載
(這個(gè)定義請(qǐng)好好記着《丁)煤搜。其實(shí) React.js 內(nèi)部對(duì)待每個(gè)組件都有這么一個(gè)過(guò)程,也就是初始化組件 -> 掛載到頁(yè)面上的過(guò)程唧席。所以你可以理解一個(gè)組件的方法調(diào)用是這么一個(gè)過(guò)程:

-> constructor()
-> render()
// 然后構(gòu)造 DOM 元素插入頁(yè)面

這當(dāng)然是很好理解的擦盾。React.js 為了讓我們能夠更好的掌控組件的掛載過(guò)程,往上面插入了兩個(gè)方法:

-> constructor()
-> componentWillMount()
-> render()
// 然后構(gòu)造 DOM 元素插入頁(yè)面
-> componentDidMount()

一個(gè)組件可以插入頁(yè)面淌哟,當(dāng)然也可以從頁(yè)面中刪除迹卢。

-> constructor()
-> componentWillMount()
-> render()
// 然后構(gòu)造 DOM 元素插入頁(yè)面
-> componentDidMount()
// ...
// 從頁(yè)面中刪除

React.js 也控制了這個(gè)組件的刪除過(guò)程。在組件刪除之前 React.js 會(huì)調(diào)用組件定義的 componentWillUnmount:

-> constructor()
-> componentWillMount()
-> render()
// 然后構(gòu)造 DOM 元素插入頁(yè)面
-> componentDidMount()
// ...
// 即將從頁(yè)面中刪除
-> componentWillUnmount()
// 從頁(yè)面中刪除

state vs props
一個(gè)組件的 state 中的數(shù)據(jù)可以通過(guò) props 傳給子組件徒仓,一個(gè)組件可以使用外部傳入的 props 來(lái)初始化自己的 state
state 是讓組件控制自己的狀態(tài)腐碱,props 是讓外部對(duì)組件自己進(jìn)行配置。

生命周期:
有7個(gè)方法根據(jù)執(zhí)行時(shí)機(jī)掉弛,可分為3類(lèi):(組件掛載症见、組件更新、組件移除)
執(zhí)行時(shí)機(jī):
Mount:已插入真實(shí) DOM殃饿;Update:正在被重新渲染谋作;Unmount:已移出真實(shí) DOM
兩種類(lèi)型處理函數(shù):
will 函數(shù)在進(jìn)入狀態(tài)之前調(diào)用,did 函數(shù)在進(jìn)入狀態(tài)之后調(diào)用
兩個(gè)特殊狀態(tài)處理函數(shù)
componentWillReceiveProps(object nextProps):已加載組件收到新的參數(shù)時(shí)調(diào)用
shouldComponentUpdate(object nextProps, object nextState):組件判斷是否重新渲染時(shí)調(diào)用

組件掛載:
componentWillMount 渲染前調(diào)用一次乎芳,這個(gè)時(shí)候DOM結(jié)構(gòu)還沒(méi)有渲染
componentDidMount 渲染完成后調(diào)用一次遵蚜,這個(gè)時(shí)候DOM結(jié)構(gòu)已經(jīng)渲染了
組件更新:
*componentWillReceiveProps 初始化渲染不會(huì)調(diào)用,在接收到新的props時(shí)奈惑,會(huì)調(diào)用這個(gè)方法
*shouldComponentUpdate 初始化渲染不會(huì)調(diào)用吭净,接收到新的props或state時(shí)調(diào)用
componentWillUpdate 初始化渲染不會(huì)調(diào)用,更新前調(diào)用
componentDidUpdate 初始化渲染不會(huì)調(diào)用携取,更新后調(diào)用
組件卸載:
componentWillUnmount 組件移除前調(diào)用(例如清除內(nèi)存攒钳,解除事件的監(jiān)聽(tīng))

通俗講,React 將組件在web中的形成雷滋、修改和渲染等劃分為若干個(gè)階段不撑,組成組件的生命周期文兢。在一個(gè)完整的生命周期內(nèi),一個(gè)組件會(huì)經(jīng)過(guò)若干個(gè)階段焕檬,在特殊的階段組件會(huì)調(diào)用一個(gè)特別的生命周期方法姆坚。如下:

  1. constructor(props)
  2. componentWillMount()
  3. render()
  4. componentDidMount()
  5. componentWillReceiveProps(nextProps)
  6. shouldComponentUpdate(nextProps, nextState)
  7. componentWillUpdate(nextProps, nextState)
  8. render( )
  9. componentDidUpdate(prevProps, prevState )
  10. componentWillUnmount( )

事件
DOM操作
組合組件
組件通信
Mixing

三、表單
四实愚、動(dòng)畫(huà)
五兼呵、測(cè)試、調(diào)試

六腊敲、數(shù)據(jù)源

七击喂、服務(wù)端渲染

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碰辅,隨后出現(xiàn)的幾起案子懂昂,更是在濱河造成了極大的恐慌,老刑警劉巖没宾,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凌彬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡循衰,警方通過(guò)查閱死者的電腦和手機(jī)铲敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)会钝,“玉大人伐蒋,你說(shuō)我怎么就攤上這事⊥缢兀” “怎么了咽弦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胁出。 經(jīng)常有香客問(wèn)我型型,道長(zhǎng),這世上最難降的妖魔是什么全蝶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任闹蒜,我火速辦了婚禮,結(jié)果婚禮上抑淫,老公的妹妹穿的比我還像新娘绷落。我一直安慰自己,他們只是感情好始苇,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布砌烁。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪函喉。 梳的紋絲不亂的頭發(fā)上避归,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音管呵,去河邊找鬼梳毙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捐下,可吹牛的內(nèi)容都是我干的账锹。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坷襟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奸柬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起啤握,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸟缕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后排抬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡授段,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年蹲蒲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侵贵。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡届搁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窍育,到底是詐尸還是另有隱情卡睦,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布漱抓,位于F島的核電站表锻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乞娄。R本人自食惡果不足惜瞬逊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仪或。 院中可真熱鬧确镊,春花似錦、人聲如沸范删。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)到旦。三九已至旨巷,卻和暖如春廓块,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背契沫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工带猴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懈万。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓拴清,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親会通。 傳聞我的和親對(duì)象是個(gè)殘疾皇子口予,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 3. JSX JSX是對(duì)JavaScript語(yǔ)言的一個(gè)擴(kuò)展語(yǔ)法, 用于生產(chǎn)React“元素”涕侈,建議在描述UI的時(shí)候...
    pixels閱讀 2,840評(píng)論 0 24
  • 安裝: 概述 React起源于FaceBook的內(nèi)部項(xiàng)目,因?yàn)樵摴緦?duì)市場(chǎng)上所有的JavaScript MVC框架...
    姒沝無(wú)痕閱讀 722評(píng)論 0 0
  • 摘要 React中的組件類(lèi)似于狀態(tài)機(jī)沪停,每個(gè)組件都被設(shè)計(jì)成為在其生命周期過(guò)程中輸出穩(wěn)定、語(yǔ)義化的標(biāo)簽裳涛。React組件...
    桂圓_noble閱讀 2,539評(píng)論 2 11
  • 寫(xiě)在前面 React入門(mén)學(xué)習(xí)筆記木张。 教程可參考:React 教程 | 菜鳥(niǎo)教程阮一峰的網(wǎng)絡(luò)日志 > React 入...
    年少有van閱讀 389評(píng)論 1 1
  • 原教程內(nèi)容詳見(jiàn)精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過(guò)程中的一些閱讀筆記端三,個(gè)人覺(jué)得該教程講解深入淺出舷礼,比目前大...
    leonaxiong閱讀 2,843評(píng)論 1 18