2016-07-06 42 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

這些功能通常被稱爲factories意味着它們是與特定類型的屬性產生ReactElements功能。

這大約是這些工廠是如何引擎蓋下創建:

function createFactory(type) { 
    return React.createElement.bind(null, type); 
} 

它返回React.createElementthis綁定功能勢必nulltype勢必無論是傳入,使您可以創建速記實例化功能爲您的元素:

// 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'); 

React已經內置工廠爲常見的HTML標記,如divli等,你有你的問題。


,但我在努力理解爲什麼類型爲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是在一個類似的方式設置爲我已經每當這個工廠創建如上所示。

因此,null在你的情況下只是props對象,而不是type。 Type通過工廠綁定爲div,意思是props是第一個參數,而'Hello World!'字符串是children的參數。

+0

很棒的回答。在最後一段中,我假設你的意思是'div'作爲第一個參數傳遞給** createFactory ** – Snowcrash

+0

謝謝,很高興幫助。其實我不這麼認爲,我已經做了一個修改來澄清:) – nem035