2016-07-06 9 views
2

誰でもnullは、この行にあるものを知っている説明:React.DOM.p(ヌル、メッセージ) - ヌル

React.DOM.p(null, message); 

私はそれがcreateElementの簡易ラッパーです承知している、すなわち

ReactElement createElement(
    string/ReactClass type, 
    [object props], 
    [children ...] 
) 

ですが、typenullである理由を理解するのは苦労しています。ここでは、この行のために行くだろう

同じ:

React.DOM.div(null, 'Hello World!') 

答えて

6

は、これらの機能は、一般的に、彼らは、特定のタイプのプロパティでReactElementsを生成する機能である意味factoriesと呼ばれています。

これは、これらの工場は、ボンネットの下に作成されているか大体です:

あなたは速記のインスタンスを作成することができ、渡されたものは何でもにバインド nulltypeにバインド thisとバウンド関数として React.createElementを返し
function createFactory(type) { 
    return React.createElement.bind(null, type); 
} 

あなたの要素のための機能:

// create a function that creates React <div> elements 
let div = createFactory('div'); 

// create two divs using the div factory function 
let div1 = div({ /* some props */ }, 'Div 1'); 
let div2 = div({ /* some props */ }, 'Div 2'); 

すでにリアクトは、などの一般的なHTMLタグの組み込みの工場が付属しています、liなど、あなたの質問にお答えください。


が、型がnullである理由を理解するために苦労しています。あなたの例の一つを見ると、上記のすべてを考慮すると

React.DOM.div(null, 'Hello World!') 

次の処理が行われます。

React.DOM.div

は、ボンネットの下として 'div'を渡すことだけファクトリ関数であります最初の引数は React.createElementになり、それ以外のものは残りの引数として渡されます。

基本的な考え方:私はこのファクトリが作成された時はいつでも上に示してきたように

// the function is created as a factory 
React.DOM.div = createFactory('div'); 

// and used to create a <div> element 
var myDiv = React.DOM.div(null, 'Hello World'); 

divのこの値は最初の引数としては、同様に設定しました。

したがって、nullpropsオブジェクトであり、typeではありません。型はファクトリによってdivにバインドされます。つまり、propsが最初の引数で、'Hello World!'の文字列がchildrenの引数です。

+0

偉大な答え。最後のパラグラフでは、私はあなたがdivの最初の引数として渡されることを意味します** createFactory ** – Snowcrash

+0

ありがとう、喜んで助けてください。実際に私は、私は明確にするために編集したとは思わない:) – nem035