react深入文檔

開篇

安裝create-react-app

1. JSX 簡介

jsx 本質(zhì)上還是js,因此遵循駝峰命名的方式

1、jsx 屬性

2、sx 防止xss漏洞
XSS漏洞分為兩種滓窍,一種是DOM Based XSS漏洞,另一種是Stored XSS漏洞巩那。理論上吏夯,所有可輸入的地方?jīng)]有對輸入數(shù)據(jù)進(jìn)行處理的話此蜈,都會(huì)存在XSS漏洞,漏洞的危害取決于攻擊代碼的威力噪生,攻擊代碼也不局限于 script
所有的數(shù)據(jù)在頁面渲染之前都會(huì)被轉(zhuǎn)換成字符串裆赵,這防止 XSS 進(jìn)攻

3、dangerouslySetInnerHTML

4跺嗽、false/undefined/null/0 如何渲染战授?
組件的第一個(gè)字母必須大寫是因?yàn)榧s定,否則babel會(huì)轉(zhuǎn)譯出錯(cuò)桨嫁。

2. React 組件和props

設(shè)置默認(rèn)的props

在class里 static defaultProps
在外面直接寫靜態(tài)屬性
類型檢測
https://blog.csdn.net/Her_smile/article/details/79638715?utm_source=blogxgwz0
https://blog.csdn.net/kuangshp128/article/details/68065558?utm_source=blogxgwz1

React組件有幾種生成方式

function 形式

class

條件渲染有幾種方式

function if/else

變量賦值

inline 形式 植兰, 比如 {condition && component}, 或者 ? : 操作

props / props.children

pure function

屬性不可修改

如何掛載到dom元素上 ReactDOM.render()

3. state 和 生命周期函數(shù)

setState 是 異步的嗎? this.state.a 的訪問情況

didMount和unmount的作用

shouldUpdate的作用璃吧,如果shouldUpdate 返回了false楣导,子組件的render還觸發(fā)嗎?哪些函數(shù)不再執(zhí)行了畜挨?willUpdate和didUpdate筒繁,render 都不在觸發(fā)了

setState觸發(fā)后發(fā)生了什么?

image.png
constructor 
componentWillMount
render
componentDidMount
//這個(gè)循環(huán)將會(huì)執(zhí)行一次

如果想訪問dom元素必須在componentDidMount里面訪問朦促,
如果shouldComponentUpdate如果為false膝晾,那么componentWillUpdate 和componentDidUpdate 以及render函數(shù)是不會(huì)執(zhí)行的
this.setState的改變將不會(huì)觸發(fā)componentWillReceiveProps的改變
注冊的事件必須在componentWillUnmount里面移除栓始,防止內(nèi)存泄漏务冕。
在添加綁定事件的時(shí)候,三種this轉(zhuǎn)作用域的方法

/*在**render**里面事件監(jiān)聽元素上面添加幻赚,但是每次都會(huì)綁定出一個(gè)新的地址禀忆,如果組件發(fā)生改變,里面也會(huì)被重新渲染落恼,影響性能,同樣在render里面寫箭頭函數(shù)也是一樣的*/
onClick={this.handleClick.bind(this)}
/*在constructor里面進(jìn)行綁定箩退,只需要綁定一次,可復(fù)用性強(qiáng)*/
this.handleClick = this.handleClick.bind(this)
//通過箭頭函數(shù)佳谦,會(huì)在constructor里面調(diào)用
handleClick = () =>{...}

4. refs 和 dom元素

ref的倆種使用方式

  handleClick = (event) => { 
    this.contentRef.style.color = "red";
  } 
  render() {
    console.log('render')
    return (
      <div className="App" onClick={this.handleClick}>
          <div ref={(content) => {this.contentRef = content}}>
//推薦使用4骼浴!钻蔑!
//要訪問dom加ref訪問啥刻,不建議直接getElement(性能不好)
          this time is {this.state.time}
          </div>
      </div>
    );
  }
  handleClick = (event) => { 
    this.refs.content.style.color = "red";
  } 
  render() {
    console.log('render')
    return (
      <div className="App" onClick={this.handleClick}>
          <div ref="content">
          this time is {this.state.time}
          </div>
      </div>
    );
  }

-----------------為了性能考慮,請使用以下方式修改----------

在this.state中添加color:''咪笑;
在div上加style={{color:this.state.color}};
在handleClick中添加this.setState({color:'red'});
/*在做動(dòng)畫的時(shí)候可帽,是比較耗時(shí)的,最好使用上面的方式
或者使用class
*/
在div上加 className={{this.state.a?"a":"b"}}

refs是字符串有什么問題窗怒?
dom元素頻繁訪問有什么問題映跟?
影響性能

5. 事件

1.如何阻止默認(rèn)行為蓄拣? return false 可以嗎?

2.SyntheticEvent 是什么東西努隙?

event 可以放到異步里面嗎球恤? 比如 setTimeout(() => {console.log(event)}, 1)

事件里面的作用域


<div onClick=""></div>
function test(event) {
  return false;
}
//react event
handleClick = (event) => {
  event.stopPropagation();
  event.preventDefault(); // 在react里面也是可以這樣調(diào)用的

  setTimeout(() => {
    console.log(event.type)  
    //event在異步是無法調(diào)用的,每次event調(diào)用后都會(huì)被銷毀
  },0)
  console.log(event.type)   
}
//原生里面的event和react里面的event是不一樣的
//react里面的event是被react封裝過的
//react里面封裝的event SyntheticEvent擁有大部分原生event的方法和屬性
//可以通過event.nativeEvent == 原生的event

6. JSX和HTML有什么區(qū)別荸镊?

屬性

事件

空格

7.list渲染

key的作用是什么碎捺,key如果不穩(wěn)定有什么問題嗎?
避免整體list被渲染贷洲,要取得比較穩(wěn)定收厨,不建議用index之類,耗性能优构。如果不增減index可以诵叁,最好添加id相對比較穩(wěn)定。

image.png

上面代碼钦椭,如list中某項(xiàng)改變了可以通過shouldComponentUpdate來判斷是否需要改變

8.this.props.children

image.png

9.ReactDOM.render

image.png

其中ReactDOM.render接收三個(gè)參數(shù)拧额,第一個(gè)是組件,第二個(gè)是節(jié)點(diǎn)彪腔,第三個(gè)是渲染后的回調(diào)侥锦。

10.深拷貝

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市德挣,隨后出現(xiàn)的幾起案子恭垦,更是在濱河造成了極大的恐慌,老刑警劉巖格嗅,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件番挺,死亡現(xiàn)場離奇詭異,居然都是意外死亡屯掖,警方通過查閱死者的電腦和手機(jī)玄柏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贴铜,“玉大人粪摘,你說我怎么就攤上這事∩馨樱” “怎么了徘意?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陷嘴。 經(jīng)常有香客問我映砖,道長,這世上最難降的妖魔是什么灾挨? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任邑退,我火速辦了婚禮竹宋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘地技。我一直安慰自己蜈七,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布莫矗。 她就那樣靜靜地躺著飒硅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪作谚。 梳的紋絲不亂的頭發(fā)上三娩,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音妹懒,去河邊找鬼雀监。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眨唬,可吹牛的內(nèi)容都是我干的会前。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匾竿,長吁一口氣:“原來是場噩夢啊……” “哼瓦宜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岭妖,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤临庇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后区转,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苔巨,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡版扩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年废离,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礁芦。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜻韭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柿扣,到底是詐尸還是另有隱情肖方,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布未状,位于F島的核電站俯画,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏司草。R本人自食惡果不足惜艰垂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一泡仗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猜憎,春花似錦娩怎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柬讨,卻和暖如春崩瓤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背踩官。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工谷遂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卖鲤。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓肾扰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛋逾。 傳聞我的和親對象是個(gè)殘疾皇子集晚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

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