好處最近學(xué)了一些 react 和es6 的一些知識(shí),并且使用 react 寫了一個(gè) TodoList 項(xiàng)目===>預(yù)覽 && 源碼 感覺學(xué)的挺多的,并且遇到的坑也不少?,說實(shí)話,一開始學(xué) react 看到 jsx 語法有點(diǎn)不適應(yīng),說好的結(jié)構(gòu)和行為分離呢?,不過隨著通過一個(gè)項(xiàng)目的完成,漸漸明白了這么寫的好處
自定義標(biāo)簽
結(jié)構(gòu)清晰
代碼模塊化
更加語義化
不過也有缺點(diǎn)瀏覽器不支持這語法
必須通過一大堆工具來轉(zhuǎn)換
一些需要注意的點(diǎn)1. react聲明組件時(shí),組件名稱必須以大寫字母開頭如?:
2. 每個(gè)標(biāo)簽必須閉合,因?yàn)椴捎玫?js+xml 寫法,如?:
3. 組件的返回值只能有一個(gè)頂層元素,如?:
下面是錯(cuò)誤的:
render () { return (12) }
必須這樣
render () { return () }12
4. return后面要加一個(gè)括號(hào),目的是防止 JavaScript 代碼在解析時(shí)自動(dòng)在換行處添加分號(hào):
renderSquare(i) { return (); }
5. render()里面不能寫 class,for,而是要寫成className和htmlFor,因?yàn)?class ,for 是 javascript 的關(guān)鍵字,因此不能使用,如:
下面是錯(cuò)誤的
而是要寫 className:
6. 不要直接更新狀態(tài),如
this.state.comment = "Hello";此代碼不會(huì)重新渲染組件的,之前就這么寫,啥反應(yīng)也沒有?,應(yīng)該要用setState():?
this.setState({comment: "Hello"});(注意!!:構(gòu)造函數(shù)(constructor)是唯一能夠初始化 this.state 的地方。)
7. 使用style
我們?cè)?html 可以這么寫:
但是在 jsx 里面卻不能這么寫,必須用兩個(gè)花括號(hào)包裹,并且里面不能寫-,要用駝峰形式寫,如上面的 background-color寫成backgroundColor:
8. 關(guān)于 setState
setState方法用于更新當(dāng)前組件的state狀態(tài)值,但調(diào)用這個(gè)方法后,state并不會(huì)立即更新,而是在render方法調(diào)用后才會(huì)更新
react 特點(diǎn)虛擬DOM: React是以數(shù)據(jù)驅(qū)動(dòng)的,每次數(shù)據(jù)變化React都會(huì)掃描整個(gè)虛擬DOM樹,自動(dòng)計(jì)算與上次虛擬DOM的差異變化,然后針對(duì)需要變化的部分進(jìn)行實(shí)際的瀏覽器DOM更新。
組件化: React可以從功能角度劃分,將UI分解成不同組件,各組件都獨(dú)立封裝,整個(gè)UI是由一個(gè)個(gè)小組件構(gòu)成的一個(gè)大組件,每個(gè)組件只關(guān)系自身的邏輯,彼此獨(dú)立(比如你有個(gè)按鈕,很多頁面都有這個(gè)按鈕,那么就可以把這個(gè)按鈕封裝成該組件)。
單項(xiàng)數(shù)據(jù)流:React只有單向數(shù)據(jù)流動(dòng)-從父節(jié)點(diǎn)傳遞到子節(jié)點(diǎn)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/88840.html
相關(guān)文章
從一次重寫原生方法遇到的坑,總結(jié)一下Web中的事件系統(tǒng)
摘要:問題初探索刪掉那一點(diǎn)重寫的代碼后,表現(xiàn)符合預(yù)期了。每一次都重新造一個(gè)虛擬的,然后監(jiān)聽其自定義事件,并且立即觸發(fā)這個(gè)自定義事件。真的不要隨便重寫原生方法。。。于是,我全面總結(jié)一下了中的事件系統(tǒng),也算是對(duì)基礎(chǔ)的鞏固。 寫在前面 前段時(shí)間,我寫過一篇文章前端開發(fā)中的Error以及異常捕獲。 在文章中,我提到了這個(gè)問題: showImg(https://segmentfault.com/img...
todo-list 項(xiàng)目問題總結(jié)(使用 react 進(jìn)行開發(fā))
摘要:項(xiàng)目問題總結(jié)這個(gè)項(xiàng)目,很簡單,前端使用,后端使用進(jìn)行開發(fā)。方便移動(dòng)端開發(fā)。當(dāng)動(dòng)畫結(jié)束后,有一個(gè)鉤子函數(shù)可以使用其他一些功能組件,都是自己嘗試去編寫的,像日歷組件組件組件等。版本的,是沒有任何的鉤子函數(shù),我就感覺懵逼了。。。 todo-list 項(xiàng)目問題總結(jié) 這個(gè) todo-list 項(xiàng)目,很簡單,前端使用 react,后端 nodejs 使用 koa2 進(jìn)行開發(fā)。數(shù)據(jù)庫使用 Mysql...
兩年React老兵的總結(jié) - 類型檢查篇
摘要:系列引言最近準(zhǔn)備培訓(xùn)新人為了方便新人較快入手開發(fā)并編寫高質(zhì)量的組件代碼我根據(jù)自己的實(shí)踐經(jīng)驗(yàn)對(duì)組件設(shè)計(jì)的相關(guān)實(shí)踐和規(guī)范整理了一些文檔將部分章節(jié)分享了出來由于經(jīng)驗(yàn)有限文章可能會(huì)有某些錯(cuò)誤希望大家指出互相交流由于篇幅太長所以拆分為幾篇文章主要有以 系列引言 最近準(zhǔn)備培訓(xùn)新人, 為了方便新人較快入手 React 開發(fā)并編寫高質(zhì)量的組件代碼, 我根據(jù)自己的實(shí)踐經(jīng)驗(yàn)對(duì)React 組件設(shè)計(jì)的相關(guān)實(shí)踐...
React同構(gòu)直出優(yōu)化總結(jié)
摘要:同構(gòu)的關(guān)鍵要素完善的屬性及生命周期與客戶端的時(shí)機(jī)是同構(gòu)的關(guān)鍵。的一致性在前后端渲染相同的,將輸出一致的結(jié)構(gòu)。以上便是在同構(gòu)服務(wù)端渲染的提供的基礎(chǔ)條件。可以將封裝至的中,在服務(wù)端上生成隨機(jī)數(shù)并傳入到這個(gè)中,從而保證隨機(jī)數(shù)在客戶端和服務(wù)端一致。 原文地址 React 的實(shí)踐從去年在 PC QQ家校群開始,由于 PC 上的網(wǎng)絡(luò)及環(huán)境都相當(dāng)好,所以在使用時(shí)可謂一帆風(fēng)順,偶爾遇到點(diǎn)小磕絆,也能夠...
React Fiber源碼分析 第四篇(歸納總結(jié))
摘要:為什么網(wǎng)頁性能會(huì)變高要回答這個(gè)問題,需要回頭看是單線程的知識(shí)點(diǎn)。在分析的過程中,發(fā)現(xiàn)了的源碼中使用了很多鏈?zhǔn)浇Y(jié)構(gòu),回調(diào)鏈,任務(wù)鏈等,這個(gè)主要是為了增刪時(shí)性能比較高 系列文章 React Fiber源碼分析 第一篇 React Fiber源碼分析 第二篇(同步模式) React Fiber源碼分析 第三篇(異步狀態(tài)) React Fiber源碼分析 第四篇(歸納總結(jié)) 前言 Rea...
發(fā)表評(píng)論
0條評(píng)論
閱讀 3417·2021-11-25 09:43
閱讀 2300·2021-09-06 15:02
閱讀 3546·2021-08-18 10:21
閱讀 3345·2019-08-30 15:55
閱讀 2352·2019-08-29 17:06
閱讀 3539·2019-08-29 16:59
閱讀 968·2019-08-29 13:47
閱讀 2765·2019-08-26 13:24