2017-05-29 8 views
1

私は反応を調べて、elemens/componentsを定義する2つの方法に気付きました。反応の関数アプローチと分類アプローチの違い

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

あなたの答えの延長をありがとう。なぜ2つの方法があり、どの方法を使用するかを決める方法がないのか分かりませんでした。 – amol01

関連する問題