「React」如何了解新技術(shù)枪孩?

應(yīng)該分幾個(gè)部分去了解一個(gè)新技術(shù)

一窄锅、技術(shù)的背景(解決了什么問題,什么模式)

Blue:

1木柬、過去的MVC開發(fā)模式是模型加視圖皆串,數(shù)據(jù)雙向綁定,直接操作DOM,當(dāng)數(shù)據(jù)交互復(fù)雜交錯(cuò)的時(shí)候眉枕,不方便應(yīng)用的開發(fā)恶复,同時(shí)直接對 DOM操作會(huì)延長請求數(shù)據(jù)時(shí)間怜森,數(shù)據(jù)雙向綁定可能導(dǎo)致不同頁面展示的數(shù)據(jù)錯(cuò)亂等問題,故不適用于大型應(yīng)用開發(fā)谤牡。

2副硅、react是 js框架,不是MVC開發(fā)模式拓哟,它是用于構(gòu)建可預(yù)期的和聲明式的web應(yīng)用想许,把頁面分割成一個(gè)個(gè)獨(dú)立的可重復(fù)使用的組件伶授,數(shù)據(jù)單向綁定断序,這樣在大型應(yīng)該開發(fā)過程中,可以很容易對各部分代碼進(jìn)行修改和管理糜烹,不同頁面可以重復(fù)使用一個(gè)組件违诗,又可以保證獨(dú)立數(shù)據(jù)交互。

3疮蹦、react的出現(xiàn)改善了之前MVC開發(fā)模式所暴露的缺點(diǎn)诸迟,滿足了大型應(yīng)用程序開發(fā)。


Bert:

沒錯(cuò)愕乎,不知道大家有沒有發(fā)現(xiàn)阵苇,現(xiàn)在很多地方都在取舍如何使用 "數(shù)據(jù)共享" 這個(gè)概念。

我們現(xiàn)在的四層架構(gòu)感论,雖然提取出了微服務(wù)绅项,但是業(yè)務(wù)層之間是隔離的。

數(shù)據(jù)庫比肄,也會(huì)因?yàn)闃I(yè)務(wù)方面的因素快耿,使用數(shù)據(jù)冗余。

作為新手在各個(gè)論壇上看到大神們?nèi)绾翁崛〕鲆粋€(gè)非常通用的方法芳绩,就會(huì)羨慕不已掀亥,實(shí)際工作共也會(huì)被大家噴,為什么這里長得一樣妥色,不抽取成公共的搪花?

實(shí)際上抽象是一個(gè)高級的活,對于底層開發(fā)而言嘹害,不深刻理解上下文撮竿,做出來的公用方法都是瞎扯淡。

所以現(xiàn)階段很多框架幫助大家實(shí)現(xiàn)數(shù)據(jù)共享吼拥,雙向綁定等倚聚,用起來很舒服,但在維護(hù)階段非常痛苦凿可,往往牽一發(fā)動(dòng)全身惑折。
SiHang:
react的功能其實(shí)很單一授账,主要負(fù)責(zé)渲染的功能,react只負(fù)責(zé)ui渲染惨驶,想要做好一個(gè)項(xiàng)目白热,往往需要其他庫和工具的配合,比如用redux來管理數(shù)據(jù)粗卜,react需要掌握es6


Bert:

為什么我喜歡React屋确?傳統(tǒng)的框架都是在js里面操作DOM,是緊耦合的续扔,而React是真正做到松耦合的語言攻臀。

作為React的開發(fā)者,大家一定要習(xí)慣一點(diǎn):所有的操作能有數(shù)據(jù)解決纱昧,就不要去操作DOM刨啸。

就是因?yàn)镽eact的松耦合,所以微信可以做出小程序识脆。(這是我個(gè)人的理解)

所有的數(shù)據(jù)设联,都可以使用Js,而UI層灼捂,用什么體現(xiàn)總要嗎离例?使用Html還是XML又或者其他?

React真正的做到讓開發(fā)人員專心寫Js悉稠,把渲染的工作交給組件宫蛆。

我覺得這個(gè)是未來前端發(fā)展的一個(gè)大方向。
Jack:

react提供了良好的虛擬dom對象偎球,讓元素組件化洒扎,增強(qiáng)了可復(fù)用性
react如果非要和mvc關(guān)聯(lián)的話,只是其中的view層
模式:FP-函數(shù)式程序設(shè)計(jì)


Bert:

組件化的思維衰絮,讓開發(fā)更容易理解組件復(fù)用這個(gè)思維袍冷,其實(shí)所有框架都是可以復(fù)用的,只是對于開發(fā)而言沒有規(guī)范猫牡。

虛擬DOM的好處不僅僅與復(fù)用胡诗,而是為JS何HTML分離打下了基礎(chǔ),通過算法加速了頁面解析速度淌友。

React在整體看過去確實(shí)是做的view的事情煌恢。

函數(shù)式編程的最佳實(shí)例是Redux,而不是React

lLQunBin:

通過構(gòu)造虛擬DOM提高了Web的性能震庭,解決了復(fù)雜和頻繁的DOM操作產(chǎn)生性能的問題瑰抵,
采用的是組件化開發(fā)模式,總要操作于View是視圖層對頁面進(jìn)行開發(fā)


Bert:

理解的不錯(cuò)器联,虛擬DOM不僅僅提高了性能二汛,傳統(tǒng)開發(fā)模式的性能與React不分高下婿崭,虛擬DOM起到的決定性作用是讓開發(fā)人員脫離了DOM操作,且不會(huì)降低性能肴颊。
JiaWei

a) 解決大量操作節(jié)點(diǎn)的需要氓栈;
b) 組件化;
c) 提高性能婿着;
d) 單向數(shù)據(jù)流授瘦;


Bert:

該說的都被你總結(jié)了,最好還是加上一些自己的理解竟宋,很多東西百度一下出來對自己的提升幫助不大 >.<
Rex:

采用了MVVM模式提完,通過DOM的虛擬減少DOM的交互


Bert:

理解不到位,可以看看前面的回復(fù)
ShanShan:

React:用于構(gòu)建用戶界面的庫袜硫,僅僅關(guān)注UI層氯葬;解決面需要不斷加載導(dǎo)致速度很慢的問題挡篓;采用了虛擬DOM,把UI拆分成組件婉陷,引入了JSX語法規(guī)則,可以使用類似HTML的語法去寫js的函數(shù)調(diào)用

WebPack:把有依賴關(guān)系的各種文件打包成一系列的靜態(tài)資源


Bert:

大部分的UI框架都是關(guān)注UI層官研,且執(zhí)行速度并不滿秽澳,如Jquery,到目前為止性能都不弱戏羽。

WebPack是React生態(tài)體系之一担神,但不起到?jīng)Q定性作用,他只是做了打包編譯的活始花,如果有比他更合適的工具妄讯,卻換成本不大。
XuYang:

React 利用jsx語法構(gòu)建ui酷宵,有點(diǎn)類似于view層亥贸。Redux 用來處理數(shù)據(jù)和邏輯,與react連接浇垦,對頁面數(shù)據(jù)進(jìn)行模塊化處理炕置,兩者結(jié)合起來類似于MVC框架。吃
Ant 是ui庫男韧,可以很好的與react結(jié)合朴摊。


Bert:
最重要的虛擬DOM你給漏了 ^_^

二、技術(shù)的體系(js,jsx,webpack,npm)

Blue:

該新技術(shù)主要包含了js\jsx\webpack\npm這幾部分內(nèi)容此虑, js作為主體甚纲,貫穿整個(gè)應(yīng)程序開發(fā);jsx的作用是可以在js 中插入html標(biāo)簽朦前;webpack相當(dāng)于模塊打包機(jī)介杆,它把整個(gè)項(xiàng)目看成一個(gè)整體讹弯,通過一個(gè)切入點(diǎn),查詢各個(gè)模塊中無法被js解析對內(nèi)容進(jìn)行打包这溅,然后解析成可以被js 識別對代碼渲染到頁面组民;npm是react開發(fā)技術(shù)中所需要的依賴插件,引入各自插件有利于在開發(fā)過程中悲靴,開發(fā)出豐富的應(yīng)用臭胜。


Bert:

大家都被括號的內(nèi)容局限了,其實(shí)React生態(tài)除了這些還有很多癞尚,希望多去了解了解耸三,像Redux、Immutable等浇揩,都是技術(shù)體系中的仪壮,只是現(xiàn)在沒有使用。
SiHang:

react 還是一個(gè)類似組件包的東西   由多個(gè)小組件構(gòu)成


Bert:

起碼解釋一下括號里的內(nèi)容嘛 >.<
Jack:

js:JavaScript一種直譯式腳本語言胳徽,是一種動(dòng)態(tài)類型积锅、弱類型、基于原型的語言养盗,內(nèi)置支持類型缚陷。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分往核,廣泛用于客戶端的腳本語言
jsx:JSX就是Javascript和XML結(jié)合的一種格式箫爷。React發(fā)明了JSX,利用HTML語法來創(chuàng)建虛擬DOM聂儒。當(dāng)遇到<虎锚,JSX就當(dāng)HTML解析,遇到{就當(dāng)JavaScript解析衩婚。
webpack:webpack是一款模塊加載器兼打包工具窜护,它能把各種資源,例如JS(含JSX)谅猾、coffee柄慰、樣式(含less/sass)、圖片等都作為模塊來使用和處理税娜。
npm:包管理工具


Bert:

多想想坐搔,其他的東西,還有哪些技術(shù)體系敬矩,可以在評論中留言概行。
LiQunBin:

1.JS基于ES6的javascript進(jìn)行發(fā)開
2.JSX就是Javascript和XML結(jié)合的一種格式。React發(fā)明了JSX弧岳,利用HTML語法來創(chuàng)建虛擬DOM凳忙。當(dāng)遇到<业踏,JSX就當(dāng)HTML解析,遇到{就當(dāng)JavaScript解析涧卵。
3.webpack用來打包項(xiàng)目代碼勤家,解析成瀏覽器可以識別的代碼
4.npm用來安裝工程環(huán)境

Bert:

其實(shí)ES5也是可以使用的,但是ES6的語法更加規(guī)范柳恐,所以我們使用了ES6
JiaWei:

a) Webpack:簡化開發(fā)復(fù)雜度伐脖,提供各種依賴包,并將瀏覽器無法識別或者識別困難的JS乐设、css等轉(zhuǎn)換為瀏覽器可以識別的代碼讼庇。
b) Npm:用于啟動(dòng)項(xiàng)目,提供服務(wù)近尚。
c) JSX:可以使組件和組件之間的結(jié)構(gòu)看上去更加清晰蠕啄。

Bert:

多想想,結(jié)合以往的經(jīng)驗(yàn)戈锻,思考下還有哪些技術(shù)體系歼跟。
Rex:

js、jsx舶沛、webpack嘹承、npm、組件
ShanShan:

jsx:javascript 和xml
webpack:這個(gè)配置文件主要分為三大塊:
     1.entry 入口文件 讓webpack用哪個(gè)文件作為項(xiàng)目的入口
     2.output 出口 讓webpack把處理完成的文件放在哪里
     3.module 模塊 要用什么不同的模塊來處理各種類型的文件
     如何配置不清楚如庭,需要繼續(xù)學(xué)習(xí)
npm:用來安裝所需要的依賴


Bert:

Webpack的文檔很多,但是我們實(shí)際用的到的很少撼港,學(xué)習(xí)一門工具坪它,最好的方式是有需要的時(shí)候去學(xué)習(xí),如果只是干學(xué)不用帝牡,會(huì)影響到自己的熱情往毡。
XuYang:

Js 部分主要使用ES6/ES7,原生js體系靶溜。
Jsx 可以使react直接支持 html寫法來編寫ui框架开瞭,用來代替常規(guī)的js寫法,更趨向于原生HTML寫法罩息。減少很多工作量嗤详。
Webpack 是自動(dòng)化發(fā)布工具,用來編譯es6/es7 自動(dòng)打包瓷炮,自動(dòng)壓縮葱色,自動(dòng)化發(fā)布方面的工作
NPM 包管理工具。

Bert:

大家都被局限了~~~

三娘香、采用的開源框架(react + ant苍狰,整體架構(gòu)是怎樣的)

Blue:

react為主體結(jié)構(gòu)办龄,ant是UI框架,通過view綁定方法到action,在action里面通過標(biāo)記連接reduce,在reduce  里面進(jìn)行攔截淋昭,把數(shù)據(jù)存入state俐填,渲染到頁面中,并且實(shí)現(xiàn)了前后端分離翔忽。


Bert:
Antd只是幫我們做了組件分裝的活玷禽,方便了我們的開發(fā),且使用它們做出來的組件呀打,更方便矢赁、易用、穩(wěn)定贬丛。
SiHang:

redux 則來處理大量數(shù)據(jù)交互的問題  antd 算是react 配套的組件 是寫好的東西 就像bootstrop

Bert:

理解的不錯(cuò)撩银,如果有能力,我們可以做自己的組件庫豺憔。
Jack:

采用的開源框架(react + ant额获,整體架構(gòu)是怎樣的)
react :負(fù)責(zé)提供dom生成 
ant :提供UI庫


Bert:

解釋了一遍沒有講到要點(diǎn)。
LiQunBin:

Ant UI框架恭应,基于react組件話開發(fā)模式抄邀,整體的界面效果很好,也有著豐富的API可以使用昼榛,用起來也很方便


Bert:

沒錯(cuò)境肾,Antd做的比我們自己做的好,那么就先用胆屿,邊用邊學(xué)習(xí)奥喻。
JiaWei:

a) ant基于react來開發(fā),基本上開發(fā)者不用過多的編寫html代碼以及CSS非迹。他們兩個(gè)的關(guān)系類似于:ant為菜环鲤,react是刀,開發(fā)者是廚師憎兽,npn/node是爐子和火冷离、webpack為調(diào)味品。廚師用刀處理菜纯命,然后烹飪出一盤菜西剥。
Rex:

不懂
ShanShan:

采用的開源框架(react + ant,整體架構(gòu)是怎樣的)
     采用的開源框架是react-webpack-redux

     架構(gòu)里面主要包括以下文件夾:
     conf-配置文件
     node_modules-安裝的依賴包
     actions  -  行為的抽象
     components - 可復(fù)用的組件
     containers-不知道
     images-存儲(chǔ)圖片
     reducers-響應(yīng)的抽象(目前在項(xiàng)目里面都是存儲(chǔ)的數(shù)據(jù)文件)
     static-靜態(tài)資源文件     
     sources-資源管理
     stores-reducer放在stores,action作用于stores扎附,reducer根據(jù)stores進(jìn)行響應(yīng)
     test-單元測試

     這個(gè)框架里面action蔫耽、reducers和store三者的使用比較迷糊


Bert:

這里提到Webpack和Redux很好,證明沒有被題目局限,Webpack和Redux都是開源框架之一匙铡。
action图甜、reducers和store是屬于Redux的,可以先去看看相關(guān)文檔鳖眼,問一些更深入的問題黑毅。
XuYang:

入口entires 定義路由組件,根據(jù)路由調(diào)用view頁面钦讳,view頁面調(diào)用 不同的components組件矿瘦,頁面或者組件定義事件響應(yīng) 觸發(fā)actions,actions調(diào)用相對應(yīng)得reducers層愿卒,根據(jù)type 來執(zhí)行響應(yīng)的reducers層缚去,reducers用來處理數(shù)據(jù)的改變以及改變stroe ,根據(jù)react的機(jī)制來對頁面數(shù)據(jù)進(jìn)行修改琼开。Api層用來調(diào)用服務(wù)器數(shù)據(jù)易结,constants定義常量。Uitl定義公用方法柜候。Antd用來支持ui搞动。類似于components的組件。


Bert:
看的出來使用起來越來越熟悉了渣刷,快要出師了 ^.^

其實(shí)整體架構(gòu)就是:
Redux操作數(shù)據(jù)(實(shí)現(xiàn)數(shù)據(jù)共享)
Antd負(fù)責(zé)UI鹦肿,提供現(xiàn)成的組件
Webpack負(fù)責(zé)打包編譯。

四辅柴、開發(fā)的框架(在開源框架基礎(chǔ)上增加哪些部分箩溃?)

Blue:

可能是增加了cpmmponent,react不是直接對DOM進(jìn)行操作 碌识,而是通過虛擬的DOM碾篡,把數(shù)據(jù)放在虛擬DOM上,計(jì)算最小的時(shí)間請求服務(wù)器筏餐,也減少了請求服務(wù)器次數(shù)。


Bert:

這個(gè)題目比較深入牡拇,需要可以理解各種關(guān)系后梳理出來魁瞪,有更好的梳理隨時(shí)在評論中留言
Jack:

redux:輕量級的數(shù)據(jù)管理工具 (讓每個(gè)react生成的虛擬dom 中的數(shù)據(jù)可以 互相調(diào)用 )


Bert:
我們的腳手架在基礎(chǔ)框架上增加了什么,如何讓他們結(jié)合起來工作的惠呼。
LiQunBin:

對數(shù)據(jù)和方法進(jìn)行分開放置导俘,分開管理;
通過type標(biāo)記連接方法與變量
JiaWei:

4. 開發(fā)的框架(在開源框架基礎(chǔ)上增加哪些部分)
a) ES6剔蹋;
b) React;
c) Redux;
d) Less;
e) Ant-design;
f) Webpack;
g) Npm/cnpm;
h) Git;
i) json
Rex:

nodejs旅薄、redux
ShanShan:

采用開源框架react-webpack-redux
使用yeoman初始化項(xiàng)目yo react-webpack-redux  “項(xiàng)目名字”,增加的部分現(xiàn)在不知道
XuYang:

增加了api的數(shù)據(jù)處理
增加了store的reducers將所有reducers合并處理。封裝了數(shù)據(jù)請求的三個(gè)狀態(tài)'PENDING', 'SUCCESS', 'ERROR'

Bert:
沒錯(cuò),繼續(xù)深入少梁,還有很多洛口。

大家可以看看我之前寫的 React+redux+webpack 項(xiàng)目構(gòu)建:初具規(guī)模

五、練習(xí)凯沪,遇到問題第焰,解決問題

Blue:

action 里面的params{}還是很模糊;


Bert:

閱讀 uitl/index.js

export function createReducer(initialparams, reducerMap) {
    return (params = initialparams, action) => {
        const reducer = reducerMap[action.type]

        return reducer ? reducer(params, action.payload ? action.payload : {}, action.params) : params
    }
}

這快代碼是做什么用的妨马,可以在評論中留言挺举。
SiHang:

寫代碼開始的時(shí)候,各種語法錯(cuò)誤烘跺, 引用不到位湘纵,看代碼出錯(cuò)提示,依賴問題滤淳,引用路由顯示頁面梧喷。。等等  


Bert:

現(xiàn)在呢娇钱,還有入到類似的問題嗎伤柄?或者有其他問題?在評論中留言
JiaWei:

a) 需要的不是一個(gè)已經(jīng)搭建完成的模板文搂,然后我們對其進(jìn)行各種擴(kuò)展适刀,而是需要弄懂怎么去搭建一個(gè)框架模版出來,授人以魚不如授人以漁煤蹭。
b) 框架有各種文件夾笔喉,但是各文件夾有什么作用,分別是做什么的硝皂,在框架中主要是放置一些什么東西的常挚。(所有頁面調(diào)用的公共方法、單個(gè)頁面的方法稽物、數(shù)據(jù)的傳遞奄毡、數(shù)據(jù)的獲取、狀態(tài)的傳遞)

我的疑問:
1. ES6贝或,框架本身也可以使用原生的JS吼过,為什么要使用ES6。
2. React學(xué)習(xí)起來咪奖,概念簡單盗忱,也不是太復(fù)雜。但是學(xué)習(xí)成本還是比較高羊赵,難度比較大趟佃。也比較繁瑣。

如何使用可以在我寫的 Redux使用筆記中看到相關(guān)內(nèi)容,其他的在前面有做回復(fù)闲昭,如果有新問題罐寨,可以評論給我
ShanShan:

說一下自己的學(xué)習(xí)過程:我感覺我個(gè)人在學(xué)習(xí)這個(gè)框架的過程中,從一開始接觸的是react語法和組件的使用汤纸,忽略了這個(gè)框架應(yīng)該如何搭建衩茸,配置文件應(yīng)該如何配置,自己去網(wǎng)上百度的時(shí)候到處都是react+webpack之類的文章贮泞,看著很迷糊楞慈,學(xué)的時(shí)候比較迷茫,因?yàn)槲抑耙矝]有接觸過前端啃擦,好多語法什么的本來就特別弱囊蓝,概念也沒有那么清楚,所以有沒有什么比較好的方法學(xué)習(xí)這套框架

可以看看我寫的 Redux 使用筆記令蛉,有問題評論中留言
XuYang:

1聚霜、antd的版本問題,api與實(shí)際不太一樣珠叔。解決方法:升級antd版本
2蝎宇、state的深度拷貝問題,解決辦法:使用immutable
3祷安、css修改antd默認(rèn)樣式問題姥芥。解決辦法:暫時(shí)沒有很好的解決辦法,提升自己的css權(quán)重汇鞭,覆蓋原樣式


Bert:
有經(jīng)驗(yàn)的高手就是不一般凉唐,哈哈
YangGuang

關(guān)于React
一.技術(shù)背景
在Web開發(fā)中,總是需要把變化的數(shù)據(jù)實(shí)時(shí)反應(yīng)到UI上霍骄,這時(shí)就需要對DOM進(jìn)行操作台囱,而復(fù)雜或頻繁的DOM操作通常是性能瓶頸產(chǎn)生的原因,為了解決這個(gè)問題读整,React引入了虛擬DOM機(jī)制:每當(dāng)數(shù)據(jù)變化時(shí)簿训,React會(huì)重新構(gòu)建DOM樹,然后將當(dāng)前DOM樹與上一次的DOM樹進(jìn)行對比米间,得到區(qū)別煎楣,然后僅僅將需要變化的部分進(jìn)行實(shí)際的DOM更新,由于虛擬DOM是純粹的JS數(shù)據(jù)結(jié)構(gòu)车伞,性能比原生的DOM快很多,而對實(shí)際DOM操作的部分僅僅是Diff部分喻喳,因而能夠達(dá)到提高性能的目的另玖。
二. 主要特點(diǎn):
1.組件化: 封裝起來的具有獨(dú)立功能的組件,各個(gè)組件維護(hù)自己的狀態(tài)和UI,當(dāng)狀態(tài)變更時(shí)自動(dòng)重新渲染整個(gè)組件谦去。這是React的核心思想慷丽,組件化的方式帶來了UI功能模塊之間的分離。
2.JSX語法: 允許HTML與JavaScript混寫鳄哭,基本的語法規(guī)則是: 遇到HTML標(biāo)簽<>就用HTML解析; 遇到代碼塊{}就用JavaScript規(guī)則解析要糊。它允許直接在模板上插入JavaScript變量,如果這個(gè)變量是一個(gè)數(shù)組妆丘,則會(huì)展開這個(gè)數(shù)組的所有成員锄俄。
三.重要概念
1.this.props : 首先是一個(gè)對象,它的屬性與組件的屬性一一對應(yīng)勺拣,但是有一個(gè)例外奶赠,那就是this.props.children
2.this.props.children : 表示組件的所有子節(jié)點(diǎn),它的值有三種可能
1> 沒有子節(jié)點(diǎn) 數(shù)據(jù)類型是undefined
2> 只有一個(gè) 數(shù)據(jù)類型是object
3> 多個(gè) 數(shù)據(jù)類型是array
React提供工具方法React.Children來處理這種情況
3.PropTypes:提供參數(shù)類型檢驗(yàn)機(jī)制药有,類型不一致會(huì)導(dǎo)致報(bào)錯(cuò)毅戈,而getDefaultProps可以設(shè)置組件屬性的默認(rèn)值,
4.獲取真實(shí)的DOM節(jié)點(diǎn)(ref屬性):組件并不是真實(shí)的DOM節(jié)點(diǎn)愤惰,而是存在內(nèi)存中的一種數(shù)據(jù)結(jié)構(gòu)苇经,叫做虛擬DOM,只有在插入到文檔以后宦言,才會(huì)變成真實(shí)的DOM扇单。通過this.refs.[refName]會(huì)返回這個(gè)真實(shí)的DOM節(jié)點(diǎn)。
5.this.state:通過getInitialState方法用于定義初始狀態(tài)蜡励,也是一個(gè)對象令花,這個(gè)對象可以通過this.state獲取凉倚;this.setState修改狀態(tài)兼都,然后自動(dòng)調(diào)用this.render方法,再次渲染組件稽寒。
6. this.props 與 this.state的比較:都用于描述組件的特性扮碧,前者表示那些一旦定義,就不再改變的特性杏糙,而后者是隨著用戶互動(dòng)而產(chǎn)生變化的特性慎王。

關(guān)于Redux
一.技術(shù)背景
隨著JavaScript單頁應(yīng)用開發(fā)日趨復(fù)雜,JavaScript需要管理比以往更多的state宏侍,管理不斷變化的state已經(jīng)變得非常困難赖淤,而React也沒有涉及到state中數(shù)據(jù)處理的問題,也就是組件之間的通信谅河,而Redux就是為了解決這個(gè)問題咱旱。
二. 主要特點(diǎn)
Redux有三大原則: 
(1) 單一數(shù)據(jù)源: 整個(gè)應(yīng)用的state被儲(chǔ)存在一棵object tree中确丢,并且這個(gè)object tree 只存在于唯一一個(gè)store中。

(2) State是只讀的吐限。唯一改變state的方法就是出發(fā)action鲜侥,action是一個(gè)用于描述已發(fā)生事件的普通對象。
(3) 使用純函數(shù)來執(zhí)行修改: 為了描述action如何改變state, 需要使用reducers诸典。Reducer只是一些純函數(shù)描函,接受先前的state和action,然后返回新的state狐粱。
三.重要概念
1. Action: 將數(shù)據(jù)從應(yīng)用傳到store舀寓,是store數(shù)據(jù)的唯一來源,一般是通過store.dispatch()將action傳到store脑奠,但是多數(shù)情況下會(huì)使用react-redux提供的connect()幫助器來調(diào)用基公。
2.Reducer: Action只是描述有事情發(fā)生這個(gè)事實(shí),但是沒有指明應(yīng)用該如何更新state宋欺。而Reducer正是做這件事情轰豆。
3.Store: 將Action和Reducer聯(lián)系到一起的對象。Redux應(yīng)用只有唯一一個(gè)store齿诞。

關(guān)于React-Redux
1.容器組件使用connect() 方法連接Redux酸休,通過這個(gè)方法可以從Redux store中指定準(zhǔn)確的state到你想要獲取的組件中
2.mapStateToProps()通過props獲取的Redux全局的組件想要的state
3.mapDispatchToProps() 通過props獲取的想要的action創(chuàng)建函數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祷杈,隨后出現(xiàn)的幾起案子斑司,更是在濱河造成了極大的恐慌,老刑警劉巖但汞,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿刮,死亡現(xiàn)場離奇詭異,居然都是意外死亡私蕾,警方通過查閱死者的電腦和手機(jī)僵缺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踩叭,“玉大人磕潮,你說我怎么就攤上這事∪荼矗” “怎么了自脯?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斤富。 經(jīng)常有香客問我膏潮,道長,這世上最難降的妖魔是什么满力? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任戏罢,我火速辦了婚禮屋谭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘龟糕。我一直安慰自己,他們只是感情好悔耘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布讲岁。 她就那樣靜靜地躺著,像睡著了一般衬以。 火紅的嫁衣襯著肌膚如雪缓艳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天看峻,我揣著相機(jī)與錄音阶淘,去河邊找鬼。 笑死互妓,一個(gè)胖子當(dāng)著我的面吹牛溪窒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冯勉,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼澈蚌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了灼狰?” 一聲冷哼從身側(cè)響起宛瞄,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎交胚,沒想到半個(gè)月后份汗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝴簇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年杯活,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军熏。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轩猩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荡澎,到底是詐尸還是另有隱情均践,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布摩幔,位于F島的核電站彤委,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏或衡。R本人自食惡果不足惜焦影,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一车遂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斯辰,春花似錦舶担、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闸氮,卻和暖如春剪况,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲跨。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工译断, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人或悲。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓孙咪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隆箩。 傳聞我的和親對象是個(gè)殘疾皇子该贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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