1. React 中 keys 的作用是什么?
key是React中用于
追蹤
哪些列表中元素被修改
氧骤、刪除
或者被添加
的輔助標(biāo)識
呻疹。在diff算法
中,key用來判斷
該元素節(jié)點(diǎn)是被移動過來的還是新創(chuàng)建的元素,減少不必要
的元素重復(fù)渲染
刽锤。
2. React 中有哪些構(gòu)建組件的方式镊尺?
有什么區(qū)別?
- 函數(shù)組件看似只是一個返回值是DOM結(jié)構(gòu)的函數(shù)并思,其實(shí)它的背后是無狀態(tài)組件的思想庐氮。
- 函數(shù)組件中,你無法使用State宋彼,也無法使用組件的生命周期方法弄砍,這就決定了函數(shù)組件都是展示性組件,接收Props输涕,渲染DOM音婶,而不關(guān)注其他邏輯
- 函數(shù)組件中沒有this
- 函數(shù)組件更容易理解。當(dāng)你看到一個函數(shù)組件時莱坎,你就知道它的功能只是接收屬性衣式,渲染頁面,它不執(zhí)行與UI無關(guān)的邏輯處理檐什,它只是一個純函數(shù)碴卧。而不用在意它返回的DOM結(jié)構(gòu)有多復(fù)雜
3.調(diào)用 setState 之后發(fā)生了什么?
4.react diff 原理
- 把樹形結(jié)構(gòu)按照層級分解乃正,只比較同級元素
- 給列表結(jié)構(gòu)的每個單元添加唯一的 key 屬性住册,方便比較
- React 只會匹配相同 class 的 component(這里面的 class 指的是組件的名字)
- 選擇性子樹渲染。開發(fā)人員可以重寫shouldComponentUpdate 提高 diff 的性能
5.為什么建議傳遞給 setState 的參數(shù)是一個 callback 而不是一個對象
因?yàn)?code>this.props 和
this.state
的更新可能是異步
的瓮具,不能依賴它們的值去計算下一個 state
6.關(guān)于this綁定荧飞?
7.setState第二個參數(shù)的作用
該函數(shù)會在setState函數(shù)調(diào)用完成并且組件開始重渲染的時候被調(diào)用,我們可以用該函數(shù)來監(jiān)聽渲染是否完成
8.(在構(gòu)造函數(shù)中)調(diào)用 super(props) 的目的是什么
在 super() 被調(diào)用之前搭综,子類是不能使用 this 的垢箕,在 ES5 中,子類必須在 constructor 中調(diào)用 super()兑巾。傳遞 props 給 super() 的原因則是便于(在子類中)能在
constructor
訪問this.props
9.flux的思想和流程?
Flux 的最大特點(diǎn)条获,就是數(shù)據(jù)的"單向流動"。
流程:
用戶訪問view
view
發(fā)送用戶的action
dispatcher
接收action
蒋歌,要求store
進(jìn)行相應(yīng)的更新
store
更新后帅掘,發(fā)送一個change
事件
view
收到change
事件后,更新頁面堂油。
10. 在 React 當(dāng)中 Element 和 Component 有何區(qū)別修档?
- createElement 函數(shù)是 JSX 編譯之后使用的創(chuàng)建 React Element的函數(shù)
- cloneElement 則是用于復(fù)制某個元素并傳入新的 Props