## 確保“呈現型”的組件功能單一
把?`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`?這樣的框架的話。