2017-01-21 6 views
1

React.jsを学ぶときに質問があります。React.jsのコンポーネントに適した文法はどれですか

公式文書またはいくつかの教科書によると、私は、反応コードの2つの方法があることを発見しました。しかし、私はどちらの方が良いかは分からなかった。

class SampleComponent extends React.Component { 
    constructor() { 
    super(); 
    this.state = { 
     value: 'react' 
    }; 
    } 

    render() { 
    return (
     <p> Hello {this.state.value} !! </p> 
    ); 
    } 
} 

とこれ以外はこれです。

var SampleComponent = React.createClass({ 
    getInitialState: function() { 
    return { 
     value: 'react' 
    }; 
    }, 

    render: function() { 
    return (
     <p> Hello {this.state.value} !! </p> 
    ); 
    } 
}); 

誰かが何が何であり、どちらが良いのかを説明することはできますか?おかげさまで

+2

それ自体がない "より良い" 方法はありません。 1つはES6構文と他のES5構文です。彼らは完全に同等ですが、ES6には特別な蒸散器が必要です。そのため、使用しているバージョンによって異なります。前者(ES6)は新しいものとして好きであり、クラスとメソッドを提供しますが、これの自主性がないなどの欠点があります。 – Li357

+0

ご覧になることができます:http://stackoverflow.com/questions/30668464/react-component-vs-react-createclass –

+0

ありがとうございます。私はES5とES6を知らなかった。与えられたURLも私の質問にはっきりと答えます。 –

答えて

3

どちらも問題ありません。最初のコードはES2015(またはES6)ですが、一部の古いブラウザではサポートされていないため、通常はbabelを使用してコードをES5コード(2番目のコード)にコンパイルします。

しかし、JS20をコンパイルする必要があり、とにかくbabelを使用するため、開発者にとって、ES2015の構文ははるかに明確で簡単です。 ES2015に行くことはできますが、ES2015を学ぶ前に、ES5スキルを習得することをお勧めします。

0

私はバージョン間の違いを再確認しませんが、2番目の例ではわかりやすく直感的です。あなたがまだリアクトを学んでいる、またはまだ学習しているかもしれない他の人と働いているなら、ES5はみんなを幸せにします。

0

ありがとうございます。私はES5、ES6とその違いを知らなかった。 私はES6の使用に興味がありますが、私はjsを始めていて、多くのコーダーと同じです。 ES6ではなくES5を使用します。

+0

回答に返信する場合は、コメントを使用する必要があります。 – CodinCat

0

クラス表記はEs6形式であり、多くの利点があります。

  1. 少なくともOOPSプログラマ(Java、C++)では読みやすくなっています。
  2. "this"コンテキストのバインディングは、より簡単で明確です(矢印機能を使用)。
  3. letとconstキーワードを使用している場合は、グローバルスコープが低下します。
  4. プロトタイプの継承を容易にエミュレートする(この場合、React.Componentを拡張する)
  5. 最も重要なのは、Es6モジュールを使用してコードを整理することです。

    class SampleComponent extends React.Component { 
          constructor() { 
          super(); 
          this.state = { 
           value: 'react' 
          }; 
          } 
    
          render() { 
          return (
           <p> Hello {this.state.value} !! </p> 
          ); 
          } 
         } 
    
関連する問題