2017-05-29 49 views
1

我已經探索reactjs並注意到定義elemens/components的兩種方法。函數方法和分類方法在reactjs中的區別

class Welcome extends React.Component { 
    render() { 
     return <h1>Hello, {this.props.name}</h1>;  
    }; 
} 

const element = <Welcome name="Sara" />; 
ReactDOM.render(
    element, 
    document.getElementById('root') 
); 

和功能的方法:

function Welcome(props) { 
    return <h1>Hello, {props.name}</h1>; 
} 

他們在結果方面是相同的。但功能appracoh至少對我來說更清潔。

什麼帶來的分級方法:從reactjs文檔:

這讓我們使用額外的功能,如本地狀態和生命週期掛鉤。

除了狀態,純粹的功能方法分類的生命週期鉤子還有更多優勢嗎?

何時使用哪一個?

+0

第一種方法更像是其他面嚮對象語言,使用起來更清晰。您可以嘗試使用這兩種方法制作複雜的組件,並查看哪個更清潔 –

回答

2

除了狀態,純粹功能方法分類的生命週期鉤子還有什麼更多的優勢嗎?

當使用哪一個?

如果您需要它們提供的附加功能(*),則必須使用類。否則更多是個人喜好的問題。


*:例如,生命週期方法允許您實現邏輯以避免重新渲染對性能很重要的組件。

+0

嗨,感謝您的答覆。我也注意到,我必須在類方法中編寫render(),而在函數方法中,我只是返回模板。有什麼理由嗎? – amol01

+0

一個類基本上是一組屬性/方法。它不能直接包含可執行代碼。所以渲染代碼必須包含在一個方法內,所以碰巧方法名是'render'。你還會怎麼做? –

+0

感謝您的回答。我只是不確定爲什麼有兩種方法,以及如何決定使用哪一種。 – amol01

相關問題