本文討論的是 React.js
編程中的一些編程風格,團隊開發中遵循統一的風格有利於提升代碼的閱讀體驗。
本文譯自React style guide。下面將從三個方面來說。javascript
render()
方法放在最後在 react
組件內部,方法的順序以下:java
生命週期方法(按照時間前後順序依次爲: getDefaultProps
, getInitialState
, componentWillMount
, componentDidMount
, componentWillReceiveProps
, shouldComponentUpdate
, componentWillUpdate
, componentDidUpdate
, componentWillUnmount
)react
其餘的方法jquery
render
方法git
採用 "handle" + "EventName" 的方式來命名
Example:github
<Component onClick={this.handleClick} onLaunchMissiles={this.handleLaunchMissiles} />
爲了跟 react
的事件命名保持一致: onClick
, onDrag
, onChange
, 等等,採用以下格式:ajax
<Component onLaunchMissiles={this.handleLaunchMissiles} />
return
放在同一行爲了節約空間,採用下面的寫法:編程
return <div> ... </div>;
而不是:網絡
return ( // "div" 與 "return" 不在同一行 <div> ... </div> );
若是屬性不是太多,那就放在同一行,不然就把每個屬性都單獨寫一行:框架
<div className="highlight" key="highlight-div"> <div className="highlight" key="highlight-div" > <Image className="highlight" key="highlight-div" />
而不是:
<div className="highlight" // 屬性沒有在單獨行 key="highlight-div" > <div // 閉合便籤不在單獨的行 className="highlight" key="highlight-div"> <div // 屬性沒有排序(通常重要的屬性寫在前面) key="highlight-div" className="highlight" >
每個 .jsx
應該只能導出單獨的 react 類
。這樣有利於測試,由於這些測試框架要求一個文件導出的就是一個函數。
注意:你依然能夠在一個文件中定義多個類,只要保證導出的只有一個便可。
把 react 組件
分爲「邏輯型組件」和「呈現型組件」 是頗有必要的。前者包含的是業務邏輯,裏面不該該包含HTML;後者通常是可複用的,能夠包含HTML。前者能夠擁有本身的內部的 state
,然後者不該該擁有。
若是能用 props
就不要用 state
,這必定程度上能夠減小應用程序的複雜度。
通常的模式是:建立一個「無狀態」的組件(呈現型組件),只負責呈現數據,把包含 state
的「邏輯型組件」作爲這些組件的父級組件。 而後把它內部的 state
做爲 props
傳遞給下面的呈現型組件。這些邏輯型組件包含了全部的交互邏輯。
react 組件
都應該完成 propTypes
驗證。每個 this.props
的屬性都應該有一個與之對應的 propTypes
。
避免使用這些沒有描述意義的 prop-types:
React.PropTypes.any
React.PropTypes.array
React.PropTypes.object
最好使用:
React.PropTypes.arrayOf
React.PropTypes.objectOf
React.PropTypes.instanceOf
React.PropTypes.shape
不要經過 data-
屬性或class類。全部的信息應該都存儲在javascript中,或者在React組件中,或者在React store 中,若是使用了相似 Redux
這樣的框架的話。
直接使用 flux action,或者 $.ajax
來代替。
永遠也不要用jquery去操做DOM。
嘗試避免jquery插件的使用。有必要的話,把jquery插件包裝在React組件中。
你可使用 $.ajax
(可是不要用其餘方法,像 $.post
) 來進行網絡通訊。
你能夠從https://devarchy.com/react獲取第三方React組件。