2018-12-19 React初識(shí)

1.個(gè)人理解react就像.net mvc里的view,但實(shí)則不是。又有點(diǎn)像component開發(fā)左医,就是把任何控件都寫成一個(gè)component奴紧,一個(gè)頁(yè)面組裝多個(gè)控件特姐,就像angularjs1里的directive。

2.React引入了一個(gè)虛擬dom(virtual dom)的概念黍氮,即用js實(shí)現(xiàn)了一套dom api唐含。當(dāng)界面有變化時(shí)浅浮,react重構(gòu)dom樹,與上一次的dom樹進(jìn)行比較捷枯,然后只刷新變化的部分滚秩。最重要的一點(diǎn)是它可以批處理變化,個(gè)人理解起來(lái)就是你對(duì)某個(gè)元素做了n次操作淮捆,它會(huì)合并到最后一次郁油。打個(gè)比方,某個(gè)元素的值是1攀痊,你先后改它為2桐腌,4,5苟径,8案站。按常理來(lái)說(shuō)這個(gè)元素做了4次的更改,dom也得更新4次涩笤,但react可以把這些改變合并起來(lái)嚼吞,只認(rèn)為它從1直接變成了8。再則蹬碧,虛擬dom是內(nèi)存數(shù)據(jù)操作舱禽,所以性能還是很高的,并且操作的也只是變化的部分恩沽,就更一步提高了性能誊稚。

3.在react中,我們按照UI模塊來(lái)劃分成各自不同且獨(dú)立的組件罗心。而每個(gè)組件都應(yīng)該具備3個(gè)特征:

1)可重用:就是組件可復(fù)用里伯。

2)可組合:大家可以用不同組件組合成不同新的組件〔趁疲可嵌套

3)可維護(hù):每個(gè)組件因?yàn)槭仟?dú)立的疾瓮,都有各自的邏輯,所以每次只需要改自己內(nèi)部?jī)?nèi)容就可以了飒箭。

4.React 可以引用react后用純js編寫狼电,因?yàn)闉g覽器可以直接解析。但一般來(lái)說(shuō)還是要再引入一個(gè)JSX弦蹂。個(gè)人理解這個(gè)JSX就是個(gè)編譯轉(zhuǎn)換用的肩碟,把react的語(yǔ)法轉(zhuǎn)換成瀏覽器可直接解析的js。

5.基礎(chǔ)語(yǔ)法:

1)最簡(jiǎn)單的React.render凸椿,把render里的模版輸出到html里的dom里削祈。注意:react不依賴于jquery,雖然可以用jquery,但render的第二個(gè)參數(shù)必須用js原生的髓抑。如:

React.render(<h1>Hello World</h1>, document.getElementById('container'));

2)JSX的語(yǔ)法有個(gè)很特殊的地方咙崎,就是不加引號(hào)。允許html和js進(jìn)行混寫启昧。

var names = ['Jack', 'Tom', 'Alice'];

?React.render(<div>{names.map(function(name) {return Hello,{name}!})}</div>,?document.getElementById('container'));

3) JSX允許在模版里直接插入變量叙凡,包括數(shù)組。如果是數(shù)組密末,會(huì)自動(dòng)展開。

6.1組件屬性

React.createClass方法用于生成一個(gè)組件類:

var Greet = React.createClass({render: function(){ return <h1>Hello, {this.props.name}</h1>}});

React.render(<Greet name="Jack">,document.getElementById('container'));

注意:1)創(chuàng)建的組件首字母必須大寫

2)為元素添加css的class時(shí)跛璧,要用className

3)組件的style也要用雙大括號(hào)严里,如style={{width: this.state.width}}

4)變量都用{}包裹,不是雙引號(hào)追城。

6.2組件狀態(tài)

組件之間要相互互動(dòng)刹碾,我們可把組件看作一個(gè)狀態(tài)機(jī),最開始有個(gè)初始值座柱,然后互動(dòng)改變狀態(tài)值迷帜,從而重新渲染UI。例子:

var InputState = React.createClass({ getInitialState: function(){ return {enable = false}},

handleClick: function(event){ this.setState({enable: !this.state.enable})},

render: function(){ return <p><input type="text" disabled={this.state.enable}></input>

<button onClick={this.handleClick}>Change State</button></p>}})

解讀:getInitialState是組件初始化的時(shí)候自動(dòng)執(zhí)行色洞,必須返回null或一個(gè)對(duì)象值戏锹。方法里的enable是自己取名的。在handleClick里火诸,通過(guò)this.state.屬性名來(lái)訪問屬性值锦针,這里我們把input的disabled與enable進(jìn)行綁定。

原理:用戶點(diǎn)擊組件置蜀,導(dǎo)致狀態(tài)改變奈搜,每次修改后,就會(huì)重新自動(dòng)調(diào)用render方法

6.3 組件的生命周期

生命周期分為3個(gè)狀態(tài):

Mounting: 已插入真實(shí)DOM

Updating:正在被重新渲染盯荤。

unmounting:被移出真實(shí)DOM

React為每個(gè)狀態(tài)提供了兩種處理函數(shù)馋吗,will函數(shù)在進(jìn)入狀態(tài)之前調(diào)用,did函數(shù)在進(jìn)入狀態(tài)之后調(diào)用秋秤,三種狀態(tài)共計(jì)五種處理函數(shù)宏粤,即:

componentWillMount()

componentDidMount()

componentWillUpdate(object?nextProps,?object?nextState)

componentDidUpdate(object prevProps, object prevState)

componentWillUnmount()

此外,React還提供兩種特殊狀態(tài)的處理函數(shù):

componentWillReceiveProps(object?nextProps) 已加載組件收到新參數(shù)時(shí)調(diào)用

shouldComponentUpdate(object?nextProps,?object?nextState)組件判斷是否重新渲染時(shí)調(diào)用

6.4組件的嵌套

var Search = React.createClass({ render:function(){return <div>{this.props.searchType}:<input type="text"></input><button>Search</button></div>}})

var Page = React.createClass({ render: function(){return <div><h1>Hello</h1> <Search searchType="Title" /> <Search searchType="Content" /></div> }})

React.render(<Page/>,document.getElementById('container'));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末航缀,一起剝皮案震驚了整個(gè)濱河市商架,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芥玉,老刑警劉巖蛇摸,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異灿巧,居然都是意外死亡赶袄,警方通過(guò)查閱死者的電腦和手機(jī)揽涮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)饿肺,“玉大人蒋困,你說(shuō)我怎么就攤上這事【蠢保” “怎么了雪标?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)溉跃。 經(jīng)常有香客問我村刨,道長(zhǎng),這世上最難降的妖魔是什么撰茎? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任嵌牺,我火速辦了婚禮,結(jié)果婚禮上龄糊,老公的妹妹穿的比我還像新娘逆粹。我一直安慰自己,他們只是感情好炫惩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布僻弹。 她就那樣靜靜地躺著,像睡著了一般诡必。 火紅的嫁衣襯著肌膚如雪奢方。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天爸舒,我揣著相機(jī)與錄音蟋字,去河邊找鬼。 笑死扭勉,一個(gè)胖子當(dāng)著我的面吹牛鹊奖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涂炎,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼忠聚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了唱捣?” 一聲冷哼從身側(cè)響起两蟀,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎震缭,沒想到半個(gè)月后赂毯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年党涕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烦感。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膛堤,死狀恐怖手趣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肥荔,我是刑警寧澤绿渣,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站燕耿,受9級(jí)特大地震影響怯晕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缸棵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谭期。 院中可真熱鬧堵第,春花似錦、人聲如沸隧出。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胀瞪。三九已至针余,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凄诞,已是汗流浹背圆雁。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帆谍,地道東北人伪朽。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汛蝙,于是被迫代替她去往敵國(guó)和親烈涮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南窖剑,這只是我在學(xué)習(xí)過(guò)程中的一些閱讀筆記坚洽,個(gè)人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,813評(píng)論 1 18
  • 使用 create-react-app 快速構(gòu)建 React 開發(fā)環(huán)境 項(xiàng)目的目錄結(jié)構(gòu)如下: React JSX ...
    majun00閱讀 504評(píng)論 0 0
  • HTML模版 之后出現(xiàn)的React代碼嵌套入模版中西土。 1. Hello world 這段代碼將一個(gè)一級(jí)標(biāo)題插入到指...
    ryanho84閱讀 6,221評(píng)論 0 9
  • 秋高氣爽讶舰,碧水澄澈,那小徑上籬笆濃翠處,漸漸添了些黃色绘雁,那些經(jīng)過(guò)夏日豐沛雨水滋潤(rùn)的肥碩的花兒也悄悄稀瘦橡疼,而水邊那些...
    蝸牛雜貨鋪閱讀 185評(píng)論 0 0
  • Anna艷娜 2017年12月24日復(fù)盤 萌姐《人生效率手冊(cè)》線下核心課成都站已經(jīng)圓滿結(jié)束,但我們的學(xué)習(xí)還未停止庐舟,...
    Anna艷娜閱讀 219評(píng)論 0 0