2017-03-23 5 views
3

ES6の構文では、ReactからComponentを継承するコンポーネントはReactコンポーネントです。たとえば、次のようにReact:Stateless Reactコンポーネントが実際にReactコンポーネントであると判断するものは何ですか?

import { Component } from 'react'; 
class ExampleComponent extends Component { 
    render(){ 
      return(
       //render component content here 
     ) 
    } 
} 

ますが、この使用したステートレスコンポーネントアプローチ書き換える場合:

const ExampleComponent = (props) => { 
    return 
     //render component content here 
} 

...舞台裏で何が起こるのか、このコンポーネントは、コンポーネントからのライフサイクルの挙動を継承するように?

答えて

3

関数としてのステートレスコンポーネントは、ライフサイクルメソッドで見つかるレンダリングメソッドの本体として機能します。関数としてコンポーネントを定義すると、コンポーネントはクラスのrenderメソッドでラップされます。

コンポーネントクラスのrender()===ステートレスコンポーネント機能

+0

このようにステートレスコンポーネント関数として宣言されたコンポーネントがレンダリングされるコンテナコンポーネントのレンダリングに渡された場合、Reactはこのステートレス関数の本体が親コンポーネントのレンダリングのコンテンツのみを返すとみなします。言い換えれば、ステートレスコンポーネントの関数自体に固有のリアクションは何もありません。それを返すものは誰でも呼び出し可能になると予想されます。 –

+1

ええ、私が追加する唯一のことは、JSX、React.createElement()、またはnullを返さなければならないということです。 –

+0

パーフェクト、説明のおかげで! –

3

このコンポーネントがコンポーネントからライフサイクル動作を継承するように舞台裏で何が起こりますか?

ステートレスコンポーネントは、バッキングインスタンスないライフサイクルメソッド、などを有していません。

これは単なる関数で、React要素を返します(文字列とnullは有効なReact要素です)。

リアクションは、コンポーネントとステートレスコンポーネントの処理方法が異なります。レンダリング可能なものを返す関数であれば、直接レンダリングされます。 renderメソッドを持つクラスであれば、クラスはインスタンス化されています(まだ完了していない場合)。renderメソッドが使用されます。

関連する問題