2016-10-07 4 views
1

私はreact stateless componentを、次のことを言われた:リアクションのステートレスコンポーネントをプレーンJSに変換する方法は?

({value}) => <li>{value}</li>

desugarsを

(props) => { var value = props.value; return <li>{value}</li> }に。

私は本当にこの砂糖の背後にある論理を理解していません。 (x) => xは私が理解しているラムダ式です。しかし私が理解できないのは、{value}は何ですか?私の推測では、スコープ内にあるpropsから現在の値valueを抽出します。

(props) => { var value = props.value; return <li>{value}</li> }閉鎖か?それはprops.valueで終了しますか?私は別の関数/コンポーネントに({value}) => <li>{value}</li>を渡すと

、その後、何valueを参照してくださいだろうか?

質問はhereに由来します。

EDIT:あなたはJavaでこのような何かを書くとしたら、これは反射のことを思い出す、私が何を意味するかで、その後、あなたは右...リフレクションを使用する必要があるでしょうか?それは妥当なアナロジーですか?

EDIT2:へbabellet MyComponent = ({ value }) => <li>{value}</li>; desugarsによれば

"use strict"; 

var MyComponent = function MyComponent(_ref) { 
    var value = _ref.value; 
    return React.createElement(
    "li", 
    null, 
    value 
); 
}; 
+1

'{値}にdesugares'オブジェクトな破壊であり、あなたはそれが[値]フィールドを引っ張っている権利です'props'オブジェクトをオフにします。 –

+1

これは、関数に渡されるオブジェクトから 'value'を引き離していると言う方がより正確だと思います。そのオブジェクトは 'props'です。なぜなら、この関数が' react'でどのように使われているからですか? – Brandon

答えて

2

これはdestructuring assignmentの形態です。具体的には、MDN上の「関数パラメータとして渡されたオブジェクトからのフィールドの引き出し」という形式です。 descructuringのこの形態で

、関数は、パラメータとして渡されたオブジェクトから必要なフィールドを引っ張ります。だから、

({value}) => { console.log(value) } 

は確かにある機能は確かに

(params) => { console.log(params.value) } 

にされdesugares

+0

私は、 'value'を' {value} 'に変換するときに反応が起こると思います。定期的な破壊。私はこの砂糖を自分で使ったことはありませんでしたが、私はそれがJSXであると推測しています – Brandon

+0

@Brandonいいえ、これは純粋なネイティブなES2015破壊的な割り当てです。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Pulling_fields_from_objects_passed_as_function_parameterスニペットで – dfsq

+0

、はい、しかし、OPは、 '(小道具)=> {VARに拡張構文について尋ねました値= props.value;

  • {値}
  • } 'を返します。 'value'をブラケットすることはES2015が行うことではないので、私はそれがJSXであると仮定しています。純粋なES2015は '(小道具)=> {var value = props}に解決されます。値;戻り値
  • } '有効なJSXを返しません – Brandon

    関連する問題