2017-01-07 11 views
2

次のES6の構文を理解するのは苦労しています。私は、ドキュメントにかなり読んで、複数の変更がここに起こっているように思える:ES6括弧のない矢印機能

const renderInput = function renderInput(props) { 
    return <div> 
      <label>{props.placeholder}</label> 
     </div> 
} 

const renderInput = props => 
    <div> 
    <label>{props.placeholder}</label> 
    </div> 

は、上記のと同等のでしょうか?

+5

これはES6ではありません。 JSXかもしれない。 – Quentin

+0

はい、HTMLをバッククックで囲む必要があります。文字列パラメータには先頭に '$'が必要です... $ {param} ' – Mottie

+0

@Mottieはいそれは同じですか? – softcode

答えて

1

はい、正しいです。 の式がの場合、それは関数から返りたい式ですが、中括弧は省略することができます。

<div><label>{props.placeholder}</label></div>が、実際には、単一の式(それはReact.createElement(......)またはそのような何かにtranspiledます)で、あなたがrenderInputからそれを戻したいので、それはあなたが矢印機能の無ブラケットのバージョンを使用する方法を確かにあります。

変数を使用するか、他の計算(条件、forループなど)をしたければ、角括弧を省略することはできませんでした。

+0

だから、実際には 'render renderInput = function renderInput(props)'となり、 'renderInput'を2回繰り返します。 – softcode

+0

この関数名は、とにかく再帰でのみ使用できます。とにかく関数に名前がない場合、ブラウザのdevtoolsは 'const'の名前を割り当てます。したがって、2つはほぼ同等です。厳密に言えば、 'const renderInput = function(props){'ではなく 'function renderInput(props)'です。 –

+0

@softcode:[名前付き関数式demystified](https://kangax.github.io/nfe/)を読むことができます。 –

関連する問題