免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
React與Redux開發(fā)實例精解

一、技術簡介

1.React是一個聲明式、高效、靈活的、創(chuàng)建用戶界面的JavaScript庫

  • 聲明式:只要使用React描述組件的樣子就可以改變用戶界面

  • 高效:利益于React的虛擬DOM,以及其Diff算法

  • 靈活:指React可以作為視圖層與其他技術棧配合使用

2.Universal渲染:一套代碼可以同時在服務端和客戶端渲染

3.Redux是一個JavaScript狀態(tài)容器,提供可預測的狀態(tài)管理,三條基本原則:

  • 單一數(shù)據(jù)源:整個應用的state被存儲在一棵對象樹中,并且這個對象樹只存在于唯一一個store中

  • state只讀:并不代表我們無法改變state,指的是不允許直接對state這個變量重寫賦值

  • 使用純函數(shù)來執(zhí)行修改:更新state的reducer只是一些純函數(shù),它接收先前的state和action,并返回新的state

4.Redux的收益:可預測、便于組織管理代碼、支持Universal渲染、優(yōu)秀的擴展能力、容易測試、開發(fā)工具、社區(qū)和生態(tài)系統(tǒng)

二、在Node.js中運行React

1.Require Hook是Babel的一個內(nèi)建工具,用于在測試環(huán)境下編譯運行Node.js程序

三、在瀏覽器中運行React

1.一個React組件既可以在Node.js中渲染,也可以在瀏覽器中渲染

2.渲染組件到DOM節(jié)點中是使用了react-dom的render()功能

3.瀏覽器目前無法直接運行用ES2015和JSX語法編寫的Javascript腳本,需要使用Webpack和babel-loader打包編譯

四、開發(fā)服務器和熱替換

1.react-hmre主要包括兩個功能:熱替換React模板和捕捉錯誤

2.webpackDevMiddleware:將Webpack打包功能與Express服務器的資源服務功能合并,Express通過中間件打包,并讀取到內(nèi)存中

3.webpackHotMiddleware:熱替換

五、React的創(chuàng)新語法:JSX

1.class和for在JSX中需要寫為className和htmlFor

2.JavaScript表達式在JSX中必須被{}包裹,必須有返回值,無法直接使用if else語句,要使用if else語句可以放在函數(shù)中

3.style的屬性值不能是字符串而必須為對象,對象中的屬性名使用駝峰命名法,如font-size為fontSize

4.注釋寫在{}內(nèi)

5.數(shù)組會自動展開所有成員,但是如果數(shù)組或迭代器中的每一項都是HTML標簽或組件,那么它們必須要擁有唯一的key屬性

6.React可以渲染HTML標簽或React組件,HTML標簽使用小寫字母的標簽名,而React組件的標簽名首字母則需要大寫

六、React的數(shù)據(jù)載體:state、props與context

1.State:應該被稱為內(nèi)部狀態(tài)或局部狀態(tài),可以構(gòu)造函數(shù)中初始化內(nèi)部狀態(tài),可以通過this.setState方法更新內(nèi)部狀態(tài),還可以使用this.state獲取內(nèi)部狀態(tài),這些內(nèi)部狀態(tài)與React的事件系統(tǒng)配合就可以實現(xiàn)一些用戶交互功能

2.Props:屬性的意思,可以使用props向React組件傳遞數(shù)據(jù),React組件從props中拿到數(shù)據(jù),然后返回視圖

3.context和全局變量非常相似,大多數(shù)場景下,我們都應該盡量避免使用,適合使用的場景包括傳遞登錄信、當前 語言以及主題信息等;如果只是傳遞一些功能模塊的數(shù)據(jù),使用props傳遞數(shù)據(jù)會更加清晰和容易理解

七、React的兩個對象:ReactElement與組件實例

1.ReactElement是一個不可變的普通對象,它描述了一個組件的實例或一個DOM節(jié)點,只包含組件的類型(比如h1、或者APP)、屬性以及子元素等信息,不是組件的實例,不能在ReactElement中調(diào)用React組件的任何方法

2.對一個組件而言,props就是輸入,ReactElement就是輸出

3.Refs是一個特殊的屬性,可以是一個回調(diào)函數(shù),也可以是一個字符串

4.組件實例的生滅:

  • componentWillMount在渲染前后調(diào)用

  • componentDidMount在每一次渲染后調(diào)用

  • componentWillReceiveProps在組件接收到一個新的prop時被調(diào)用,在第一次渲染時不會被調(diào)用

  • shouldComponentUpdat返回一個布爾值。在組件接收到新的props或者state時調(diào)用

  • componentWillUpdate在組件接收到新的props或者state但還沒有render時被調(diào)用,在初始化時不會被調(diào)用

  • componentDidUpdate在組件完成更新后立即調(diào)用,在初始化時不會被調(diào)用

  • componentWillUnmount在組件從DOM中移除的時候立刻被調(diào)用

5.React組件生命周期函數(shù)中的this指向組件實例,自定義組件方法的this會因“調(diào)用者”不同而不同,為了在組件的自定義方法中獲取組件實例,需要手動綁定this到組件實例

八、初識Redux

1.Reducer是形式為(state,action)=>state的純函數(shù),描述了action如何把state轉(zhuǎn)變成下一個state

2.純函數(shù)(Pure Function):輸入/輸出數(shù)據(jù)流全是顯式(Explicit)的。顯式的意思是,函數(shù)與外界交換數(shù)據(jù)只有一個唯一渠道——參數(shù)和返回值;函數(shù)從函數(shù)外部接受的所有輸入信息都通過參數(shù)傳遞到該函數(shù)內(nèi)部;函數(shù)輸出到函數(shù)外部的所有信息都通過返回值傳遞到該函數(shù)外部

3.純函數(shù)不能訪問外部變量,它能接觸的“外地人”只有來自外部的參數(shù),純函數(shù)不能修改參數(shù),因為這樣做可能會把一些信息通過輸入?yún)?shù),夾帶到外界

4.Action是個JavaScript對象,它是store數(shù)據(jù)的唯一來源

5.Reducer是純函數(shù),不要在reducer中做這些事情:修改傳入?yún)?shù);執(zhí)行有副作用的操作;調(diào)用非純函數(shù)

九、Action創(chuàng)建函數(shù)與Redux Thunk中間件

1.Redux Thunk中間件可以讓action創(chuàng)建函數(shù)先不返回action對象,而是返回一個函數(shù)

2.Action創(chuàng)建函數(shù)就是創(chuàng)建action的函數(shù),如果要發(fā)起action創(chuàng)建函數(shù),只需要將其返回結(jié)果傳給dispatch()

十、React與Redux的連接:手動連接

1.手動連接兩個明顯的缺點:無法直接向里面的組件傳遞state和方法;任意state的變化都會導致整個組件樹的重新渲染,沒有優(yōu)化性能

2.react-redux不僅可以給組件樹中任一組件綁定state和方法,還進行了性能優(yōu)化,可以避免不必要的重新渲染

十一、React與Redux的連接:使用react-redux連接

1.使用react-redux

2.Provider的職能是通過context將store傳遞給子組件

3.connect是一個嵌套函數(shù),運行后,會生成一個高階組件(Higher-order Components),接受一個組件作為參數(shù)再次運行,會生成一個新組件

4.絕大多數(shù)情況下,我們都應該將Redux連接在組件頂層,不要讓里面的組件感受到Redux的存在

十二、實現(xiàn)撤銷/重做

1.高階函數(shù)是函數(shù)式編程中的一個概念,它可以接收其他函數(shù)作為參數(shù),然后返回一個新的函數(shù)。高階函數(shù)以及高階組件都是為了增強函數(shù)或組件 的功能而設計的。一般情況下,生成的新函數(shù)或組件不會失去原有的功能

2.Redux并不低效,它給我們帶來了清晰的狀態(tài)管理和非常好的開發(fā)體驗

十三、測試

1.測試工具:

  • Mocha:只需要在Mocha提供的全局函數(shù)(比如describe、it)中編寫測試并運行,就可以生成精美的測試報告

  • Enzyme:專門為React設計的JavaScript測試工具,用于渲染組件并操作組件中的DOM代碼

  • Expect:斷言庫,提供了常用的斷言函數(shù)

十四、Redux的全局狀態(tài)與React組件的內(nèi)部狀態(tài)

1.Redux的全局狀態(tài)就是通過store.getState()獲取的state,React組件的內(nèi)部狀態(tài)就是通過this.state獲取的state(這里的this指的是組件實例)

2.理想狀態(tài)下,程序的所有數(shù)據(jù)都應該放在Redux的全局狀態(tài)中

3.如果一些狀態(tài)只在一個組件內(nèi)部臨時使用,也可以使用組件的內(nèi)部狀態(tài)

十五、React與Redux中的數(shù)組處理

1.都是JS的語法

2.reduce()方法接收一個函數(shù)作為累加器(accumulator),數(shù)組中的每個值(從左到右)開始合并,最終為一個值

3.filter()方法使用指定的函數(shù)測試所有元素,并創(chuàng)建一個包含所有通過測試的元素的新數(shù)組

4.map()方法返回一個由原數(shù)組中的每個元素調(diào)用一個指定方法后的返回值組成的新數(shù)組

5.every()方法用于測試數(shù)組中所有元素是否都通過了指定函數(shù)的測試

6.some()方法用于測試數(shù)組中是否至少有一項元素通過了指定函數(shù)的測試

7.展開運算符允許一個表達式某處展開,常用的場景包括:函數(shù)參數(shù)、數(shù)組元素、解構(gòu)賦值

十六、Redux的大舞臺:異步

1.JS是一門事件驅(qū)動編程語言,如果為特定事件注冊了一段代碼,這段代碼將會在事件被觸發(fā)時執(zhí)行,正是事件驅(qū)動這個特性讓JS可以執(zhí)行異步代碼,而不會阻塞后面程序的運行

2.Promise是處理異步的優(yōu)秀方案,它不僅可以通過鏈式操作幫助我們擺脫回調(diào)地獄,還可以在鏈式操作過程中的任何時刻捕捉異常

3.Redux只能實現(xiàn)同步操作,但是可以通過Thunk中間件實現(xiàn)異步

十七、自定義Redux中間件

1.自定義Redux中間件只需要編寫一個三層的嵌套函數(shù)

2.一個異步請求通常需要編寫三個action,分別在開始請求、請求成功和請求失敗時被發(fā)起

十八、Universal渲染

1.預載數(shù)據(jù)指的是在服務端準備好數(shù)據(jù)后再渲染頁面,這樣瀏覽器接收到的才是攜帶數(shù)據(jù)的頁面。如果在客戶端請求數(shù)據(jù),則往往會出現(xiàn) “閃屏”問題

2.為了和服務端吐出的頁面保持一致,客戶端需要和服務端公用組件和state

十九、Universal渲染神器:Webpack同構(gòu)工具

1.從本質(zhì)上來說,Universal渲染就是服務端與客戶端環(huán)境相互模擬的技術

2.Webpack同構(gòu)工具的工作原理是更改Node.js的require()方法,使其擁有與客戶端一樣的功能

二十、多頁面的實現(xiàn):路由

1.路由本質(zhì)上只是一個多重視圖的組件

2.配置路由匹配信息,可以告訴路由如何根據(jù)URL來運行和顯示相應的組件

3.Link組件的功能和<a/>標簽相似,但是它支持一些可用于激活狀態(tài)的屬性

4.要實現(xiàn)服務端路由,只需要在Express中間件加上一個匹配路由的函數(shù),并在其回調(diào)中進行渲染即可

二十一、多頁面下的異步操作

1.redux-amrc封裝了Redux中的重復性異步操作,只需要將Promise和key值傳給redux-amrc,它會完成接下來的所有異步操作

2.在路由組件的onEnter中發(fā)起redux-amrc定制的action創(chuàng)建函數(shù),可以實現(xiàn)數(shù)據(jù)預載

3.在用戶操作所觸發(fā)的函數(shù)中發(fā)起redux-amrc定制的action創(chuàng)建函數(shù),可以實現(xiàn)手動加載數(shù)據(jù)

4.想要操作redux-amrc中的數(shù)據(jù),應該將處理action的reducer組合為對象,然后將該對象作為參數(shù)傳入reducerCreator中

二十二、使用Bootstrap

1.bootstrap-loader是一個用來加載Bootstrap的Webpack加載器,使用Sass處理CSS樣式,對于Bootstrap 3&4都能支持

2.PostCSS是一個使用JS插件轉(zhuǎn)換樣式的工具,Autoprefixer是最流行的PostCSS插件之一

3.React-Bootstrap是一個可利用的前端組件庫,可以通過更簡潔的React組件獲取Bootstrap的外觀和體驗

二十三、搭建大型項目

1.在開發(fā)環(huán)境中,通常使用開發(fā)服務器為程序提供資源服務,實現(xiàn)代碼的熱替換

2.在生產(chǎn)環(huán)境下,應該先使用Babel編譯Node.js程序,然后使用node運行

3.在生產(chǎn)環(huán)境下,不需要使用開發(fā)服務器來提供資源,而是直接將其打包到靜態(tài)資源目錄,然后在頁面中引入入口文件即可

二十四、表單

二十五、圖表與表格

二十六、用戶認證

二十七、部署

https://github.com/lewis617/react-redux-book

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
面試答案
面試穩(wěn)了!集齊幾千名程序員精選的 100 道前端面試題!
在react-native中使用redux
《深入淺出React和Redux》(4) - 服務器通信、單元測試
一切前端概念,都是紙老虎
React 語法基本使用介紹
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服