React 編程風格指南

f453 9年前發布 | 17K 次閱讀 React JavaScript開發


本文討論的是React.js編程中的一些編程風格,團隊開發中遵循統一的風格有利于提高代碼的閱讀體驗。

本文譯自 React style guide 。下面將從三個方面來講。

語法

方法順序遵循生命周期放在前面,render()方法放在最后

在react組件內部,方法的順序如下:

  1. 生命周期方法(按照時間先后順序依次為:getDefaultProps,getInitialState,componentWillMount,componentDidMount,componentWillReceiveProps,shouldComponentUpdate,componentWillUpdate,componentDidUpdate,componentWillUnmount)

  2. 其他的方法

  3. render方法

事件處理函數的命名

采用 "handle" + "EventName" 的方式來命名Example:

<Component onClick={this.handleClick} onLaunchMissiles={this.handleLaunchMissiles} />

事件函數作為屬性時的命名

為了跟react的事件命名保持一致:onClick,onDrag,onChange, 等等,采用如下格式:

<Component onLaunchMissiles={this.handleLaunchMissiles} />

元素跟return放在同一行

為了節約空間,采用下面的寫法:

return <div>
    ...
</div>;

而不是:

return (      // "div" 與 "return" 不在同一行
    <div>
        ...
    </div>
);

對HTML的屬性進行對齊和排序

如果屬性不是太多,那就放在同一行,否則就把每一個屬性都單獨寫一行:

<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"
>

一個文件只導出一個 react 類

每一個.jsx應該只能導出單獨的react 類。這樣有利于測試,因為這些測試框架要求一個文件導出的就是一個函數。

注意:你依然可以在一個文件中定義多個類,只要保證導出的只有一個即可。

語言特色

確保“呈現型”的組件功能單一

把react 組件分為“邏輯型組件”和“呈現型組件” 是很有必要的。前者包含的是業務邏輯,里面不應該包含HTML;后者一般是可復用的,可以包含HTML。前者可以擁有自己的內部的state,而后者不應該擁有。

多用 props

如果能用props就不要用state,這一定程度上可以減少應用程序的復雜度。

一般的模式是:創建一個“無狀態”的組件(呈現型組件),只負責呈現數據,把包含state的“邏輯型組件”做為這些組件的父級組件。 然后把它內部的state作為props傳遞給下面的呈現型組件。這些邏輯型組件包含了所有的交互邏輯。

使用 propTypes

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

永遠不要在DOM中保存 state

不要通過data-屬性或class類。所有的信息應該都存儲在javascript中,或者在React組件中,或者在React store 中,如果使用了類似Redux這樣的框架的話。

React 庫和組件

不要使用 backbone 模型

直接使用 flux action,或者$.ajax來代替。

盡量少用 jQuery 就少用

永遠也不要用jquery去操作DOM。

嘗試避免jquery插件的使用。有必要的話,把jquery插件包裝在React組件中。

你可以使用$.ajax(但是不要用其他方法,像$.post) 來進行網絡通信。

復用組件

你可以從 react-components.com 獲取第三方React組件。

 本文由用戶 f453 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!