2017-03-29 8 views
0

例えばモデルに関連してデータベースエントリを作成する方法がある。methodObject表記(例えば、反応しSequelize)

user.createPost({...}) 

instance.methodInstanceになります。私は、 "createPost"表記がSequelizeの特異性だと思ったが、Reactに遭遇したよりも。ではあなたは、このようなのようなコンポーネントを定義することができリアクト:別のコンポーネントは、このようにそれをレンダリングすることができ

function Square(props) { 
     return ( 
     <button className="square" onClick={() => props.onClick()} > 
      {props.value} 
     </button> 
     ); 
    } 

を:

class Board extends React.Component { 
    renderSquare(i) { 
    return <Square />; 
    } 

今、私たちはmethodClassにのぼる「renderSquare」の表記を、持っています。これは私が気づいていないjavaの構文ですか、それともこれら2つのライブラリのスタイルが似ているのは偶然でしょうか?

私は、(より一般的な)object.method構文ではなく、ラクダのケースで連結されたメソッドとオブジェクトを標準のjavascript構文で記述するかどうかを尋ねています。

答えて

1

JavaScriptはすごく素早く進化してきました。ちょっとしたことが少し混乱するかもしれません。 ES6以前は、JSにキーワードclassはありませんでした。しかし、関数を作成し、そのプロトタイプを介してメソッドを呼び出すことで、同じ結果を得ることができます。

多くの開発者、特にJava/C#で使用されていた開発者は、プロトタイプを理解できませんでした。 ES6では、古い学校のOOPスタイルをクラスとして宣言するために、いくつかの構文砂糖を作成しました。そのため、2番目の例は "java-esque"になります。そして、私は認めなければなりません - 私は実際に新しい構文が大好きです。はるかに明確です。

だからこそ、これはすべてのことです。あなたが好む方法を実際に使用することができます。反応では、基本的に単一の関数(コンストラクタではない)のコンポーネントはstatelessであり、基本的に単純なものだけをレンダリングする最小限のロジックを実装することになっています。もう少し複雑なものについては、ステートフルなコンポーネント(ES6クラスまたは通常のES5(React.createClass)を使用)を使用する必要があります。

あなたはそれがコードに反応ES5対ES6に来るときに知っておくべきことのほとんどを説明し、ここで良いガイドがあります: https://facebook.github.io/react/docs/react-without-es6.html

関連する問題