的基本區別是,當一個Component
,陣營將運行/添加其所有Lifecycle methods。當您的組件中有state
時,這會很有用。當你使用這個組件時,React將創建一個React Component Instance
,它將會添加所有的生命週期方法和其他鉤子。
class App extends React.Component{
...
}
在某些情況下,你不會用state
。在這些情況下,添加所有這些生命週期方法是不必要的。因此,React爲您提供了一種創建僅具有render
的組件的方法。它被稱爲PureComponent
。當您使用此功能時,無需創建新的Component Instance
,因爲此處沒有生命週期方法。它只是一個函數,可以使用props
並返回React元素。
class App extends React.PureComponent{
...
}
希望這有助於!
[更新]
什麼是Component
和Component Instance
?
從技術上講,React的Component
是class
或function
。
例子:
class App extends React.Component{
...
}
//stateless component
const App = (props) => {
...
}
當您使用component
,它會被實例化,更像new App()
。但是,React本身以不同的方式進行。
例如:
render(){
return <App/> //Instance of the component App
}
實例是因爲需要,每個實例可以單獨執行。實例是原始類的副本。
簡單的答案是,components
將是一個Class
和component Instance
將是類的複製/實例,將在render
希望這解釋了使用!
這似乎相關但不回答問題:http://stackoverflow.com/questions/27112274/multiple-instances-of-same-react-component – jhegedus
簡單而簡單的是:無狀態組件是一個沒有得到類似'componentDidMount'和'componentWillReceiveProps'的生命週期事件;它實際上只是呈現你通過它的任何道具。如果您創建了一個擴展了'React.Component'的''類,那麼您現在已經創建了一個可以訪問生命週期事件的有狀態組件。 – lux
經過一段時間的答案是 - 對我來說:它是在OO相同,組件是類/類型,組件實例是一個類型爲「Component」的對象,就像在Java等... – jhegedus