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

React 基礎(chǔ) 組件

1.創(chuàng)建的類需要在別的類中使用,則建立的時候需要添加export default?,另外return里面只能有一個節(jié)點,下圖就是一個簡單的組件

組件的創(chuàng)建

2.使用時以標(biāo)簽的形式使用,并以導(dǎo)包的方式引入進(jìn)來即可(組件的使用)

組件的使用

3.組件也可以通過參數(shù)的方式傳遞使用

以參數(shù)的方式傳遞

4.同樣的,react中也可以使用三目表達(dá)式

三目表達(dá)式

5.組件中參數(shù)傳遞不在需要單引號,直接{}就可以

參數(shù)傳遞

5.組件中注釋,當(dāng)使用 “//注釋”時html上也會顯示這個注釋內(nèi)容,但頁面上并不會顯示,當(dāng)使用“{/* 注釋 */}”注釋時,html和頁面都不會顯示這個注釋。

6.組件的生命周期

React生命周期

componentWillMount():頁面將要加載之前會先走這個函數(shù),可以在這個函數(shù)里面加載一些頁面的數(shù)據(jù),以及實現(xiàn)一些邏輯等等。

componentDidMount():頁面加載之后會走這個函數(shù)。


React屬性與事件

1.constructor構(gòu)造方法:?

????????????在一個類中只能有一個名為 “constructor” 的特殊方法。 一個類中出現(xiàn)多次構(gòu)造函數(shù) (constructor)方法將會拋出一個?SyntaxError?錯誤。在一個構(gòu)造方法中可以使用super關(guān)鍵字來調(diào)用一個父類的構(gòu)造方法。如果沒有顯式指定構(gòu)造方法,則會添加默認(rèn)的 constructor 方法。如果不指定一個構(gòu)造函數(shù)(constructor)方法, 則使用一個默認(rèn)的構(gòu)造函數(shù)(constructor)。

constructor解釋

React中使用constructor構(gòu)造方法更改 state 的時候會立即引起值得變更,但不會刷新整個頁面,效率非常的高,而且不會影響其他組件的state的值,只影響本身。state對于模塊來說屬于自身的屬性。

4秒之后更改頁面的值,會刷新頁面,但是不會刷新整個頁面的值,只會恒愛state中的值

2.React之props屬性:組件之間進(jìn)行傳值,對于模塊屬于外來的屬性

向BodyIndex中傳值
BodyIndex中使用props接受值

3.事件與數(shù)據(jù)的雙向綁定

?????事件的綁定

????點擊"提交"按鈕之后年齡會由原來20,改為50

點擊更改年齡

當(dāng)然也可以在綁定的時候傳一個值過去,這樣點擊"提交"按鈕之后年齡會由原來的20變?yōu)?9

點擊傳值


子頁面向父頁面?zhèn)鬟f參數(shù)的方法

在子頁面中通過調(diào)用父頁面?zhèn)鬟^來的事件 props 進(jìn)行組件的參數(shù)傳遞,通過onChange獲取子頁面輸入的值,父組件中綁定并接受子組件傳過來的值,并更改父組件中的值。

時隨著輸入框的輸入值實時觸發(fā) onChange 事件,從而實時更新 p 中的值

子類組件
父類組件

4.可復(fù)用組件

當(dāng)父組件給子組件傳的值不是一個數(shù)字時,則會報錯,子組件中添加了一個約束,使子組件只接收所有父組件傳過來的數(shù)字類型,其他都不接收。

父組件
子組件中規(guī)定userid的類型為數(shù)字類型??

如果number后面加一個?".isRequired "則父組件引用子組件必須要傳這個參數(shù),如果添加上

"BodyIndex.defaultProps = defaultProps; "這個約束,那么當(dāng)父組件沒有傳username這個值時則會給他一個默認(rèn)值,就是上圖中的 defaultProps。

如果說父傳子屬性 子在傳子屬性 書寫方法 "{...this.props} id={4}","...this.props"是拿到所有的參數(shù),"id={4}"是又另外傳了一個值過去。


5.組件的refs

當(dāng)使用ref時,使用 this.refs.submitButton.style.color = 'red' 可以直接更改input中的顏色

ref

Refs 是訪問到組件內(nèi)部 DOM 節(jié)點唯一可靠的方法

Refs 會自動摧毀對子組件的引用

不要在 render 或 render 之前對 Refs 進(jìn)行調(diào)用

不要濫用 Refs


React 樣式

1.內(nèi)聯(lián)樣式

其中的header只會影響本類,不會對其他的類進(jìn)行污染

樣式需要使用駝峰寫法屬性也是需要引起來,如果樣式要使用html中的則也需要用引號引起來

注意標(biāo)簽中給他一個class屬性需要改為className否則會與react中的class沖突

缺點是動畫、偽類(hover)等不能使用

內(nèi)聯(lián)樣式

2.內(nèi)聯(lián)樣式中的表達(dá)式

當(dāng)前 padding-top 和 paddingBottom 的高度為15px,當(dāng)觸發(fā)了點擊事件之后會給minHeader的值取反,這樣他們的值為3px,樣式會實時更改,不用刷新頁面

實時改變樣式

3.CSS 模塊化

css文件可以以require的方式導(dǎo)入進(jìn)來,在下面直引用即可

這里可以使用 class 是因為使用了一個插件?"babel-plugin-react-html-attrs"

footer.css只會影響引入的類,不會影響其他的類

使用的插件
css模塊化



React Router 路由

1.Router 基礎(chǔ)

首先需要引入路由,并把程序的入口改為<Root/>

其中的 "/" 和 "list" 是平級的,都是一個單獨的頁面

而其中的 "details" 為嵌套路由,"details"不是一個單獨的頁面,他會顯示在他所嵌套的路由的頁面上,而在路由上只要簡單的使用this.props.children即可引用子路由

路由
引用子路由

2.參數(shù)傳遞

參數(shù)傳遞時可以通過 "list/123" 寫死,也可以通過 "list/:id" 的方式占位,頁面url上拼上就可以

而在對應(yīng)的頁面上只需要使用 "this.props.params.id" 就可以接收到url上的值

參數(shù)傳遞
頁面接收參數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時,對React的特性、重點和注意事項的提取、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,409評論 2 21
  • 深入JSX date:20170412筆記原文其實JSX是React.createElement(componen...
    gaoer1938閱讀 8,183評論 2 35
  • 作為一個合格的開發(fā)者,不要只滿足于編寫了可以運行的代碼。而要了解代碼背后的工作原理;不要只滿足于自己的程序...
    六個周閱讀 8,675評論 1 33
  • 本筆記基于React官方文檔,當(dāng)前React版本號為15.4.0。 1. 安裝 1.1 嘗試 開始之前可以先去co...
    Awey閱讀 7,932評論 14 128
  • JJ,就是那個不高興收到我的郵件后,回復(fù)的不高興篇: 《般若波羅密多心經(jīng)》里說:無苦集滅道,無智亦無得。以無所得故...
    在木一方閱讀 839評論 1 1

友情鏈接更多精彩內(nèi)容