1. 程式人生 > >react使用要點筆記

react使用要點筆記

使用要點

1.react元素都是不可變的。當元素建立後無法改變其內容或者屬性。目前更新介面的唯一變法是建立一個新元素,然後傳入ReactDom.render()方法。

 

2.react只會更新必要的部分。react dom首先會比較內容元素內容先後的不同,而在渲染過程中只會更新改變了的部分。

 

3.jsx可以使用javascript表示式和註釋,兩者都需要寫在花括號中,但是不能使用ifelse語句,可使用三元運算子來代替。(jsx就是javascript)

 

4.react使用組建的時候,自定義組建必須以大寫字母開頭,組建類只能包含一個頂層標籤,新增屬性時,class要寫成className,for要寫成htmlFor,因為這兩個是javascript保留字。

 

5.掛載和解除安裝--->定時器被生成和清除

 

6.react資料單項流動,組建獨立

 

7.react中state和props區別在於state是根據使用者互動來改變,props是不可變的。

 

8.react中props驗證器列表(React.PropTypes 在 React v15.5 版本後已經移到了 prop-types 庫。

MyComponent.propTypes={ 

//可以宣告 prop 為指定的 JS 基本資料型別,預設情況,這些資料是可選的 

optionalArray:React.PropTypes.array, 

optionalBool:React.PropTypes.bool, 

optionalFunc:React.PropTypes.func, 

optionalNumber:React.PropTypes.number, 

optionalObject:React.PropTypes.object,

optionalString:React.PropTypes.string, 

//可以被渲染的物件 numbers, strings, elements 或 array

 

optionalNode:React.PropTypes.node, 

//React 元素 

optionalElement:React.PropTypes.element, 

//用 JS 的 instanceof 操作符宣告 prop 為類的例項。 

optionalMessage:React.PropTypes.instanceOf(Message),

//用 enum 來限制 prop 只接受指定的值。 

optionalEnum:React.PropTypes.oneOf(['News','Photos']), 

//可以是多個物件型別中的一個 

optionalUnion:React.PropTypes.oneOfType([React.PropTypes.string,React.PropTypes.number,React.PropTypes.instanceOf(Message)]), 

//指定型別組成的陣列 

optionalArrayOf:React.PropTypes.arrayOf(React.PropTypes.number), 

//指定型別的屬性構成的物件 

optionalObjectOf:React.PropTypes.objectOf(React.PropTypes.number), 

//特定 shape 引數的物件 

optionalObjectWithShape:React.PropTypes.shape({color:React.PropTypes.string,fontSize:React.PropTypes.number}), 

//任意型別加上 `isRequired` 來使 prop 不可空。 

requiredFunc:React.PropTypes.func.isRequired, 

//不可空的任意型別 

requiredAny:React.PropTypes.any.isRequired, 

//自定義驗證器。如果驗證失敗需要返回一個 Error 物件。不要直接使用 `console.warn` 或拋異常,因為這樣 `oneOfType` 會失效。 

customProp:function(props,propName,componentName){ 

if(!/matchme/.test(props[propName])){

returnnewError('Validation failed!'); } } } }

 

9.react事件採用駝峰命名法,事件必須在建構函式中繫結才能在建構函式中通過this去訪問相關屬性。通常有兩種解決方式1.屬性初始化語法.2.在回撥函式中使用箭頭函式(通常不建議使用這種方式繫結,當這個回掉函式作為屬性值傳入低階元件,這些元件可能進行額外的重新渲染,當避免這類效能問題)。

 

10.react事件傳入引數,引數放在event前面,回掉函式引數放在event後面,繫結方式回撥函式處使用 bind或者箭頭函式

 

運算子&& ---在javascript中 true && expression 總是返回expression, false&&expression總是返回false。

 

11.阻止組建渲染返回null即可實現,返回null並不會影響該元件生命週期方法的回掉。初始化資料簡單的說就是清理殘餘資料。

 

13. 如果列表可以進行重新排序,不建議使用索引進行排序,因為這樣會導致渲染很慢。

 

14.key應該儲存在組建上,而不是組建中的元素上<=>在map內部呼叫元素時,切記在每個元素上面加上一個獨一無二的key。

 

15.key在兄弟元素之間應該唯一,並非全域性唯一。

 

16.key會作為給react提示,但不會傳遞給組建,如果使用和key相同值,將其作為屬性傳遞。

 

17.jsx中可以出現任何表示式,但是{} 中不能出現var,const,let等這種關鍵字,表示式之間要用都好隔開。

 

18.setState是react中事件處理函式中和請求回撥函式中觸發UI更新的主要方法。

 

19.replaceState只會寶妞nextState中狀態,原state不再nextState中的狀態會全部被刪除。(replaceProps同理)

 

20.forceUpdate(強制更新)應當少使用,儘量通過設定狀態或者屬性並由react觸發render()呼叫。

 

21.如果組建以及掛載到dom中,findDomNode本地瀏覽器dom中的元素,如果組建返回null或者false,那麼該方法也返回null。

 

22.isMounted(組建掛載狀態)可以使用該方法保證setState和forceUpdate在非同步場景下呼叫不會出錯。

 

23.當使用非同步載入資料時,在元件解除安裝前使用 componentWillUnmount 來取消未完成的請求。