2016-09-13 48 views
0

用兩個大括號:反應:使用大括號和忽略它們有什麼不同嗎?

<div theBestProp={"diagonal-texture"}> ... 

VS無大括號:

<div theBestProp="diagonal-texture"> ... 

同樣的問題是相關的 「裁判」 道具:

用兩個大括號(來自陣營的文檔),訪問通過this._input

<div ref={(c) => this._input = c} ... 

VS沒有大括號,訪問通過this.refs.commander

<div ref="commander"> ... 

我也注意到,一切都出來爲字符串。對於這一點:

<PriceOption id="1" yes="true" price="free" audience="for individuals" plan="Starter" /> 

道具將是(所有字符串):

{ 
     "id": "1", 
     "yes": "true", 
     "price": "free", 
     "audience": "for individuals", 
     "plan": "Starter" 
    } 

所以我想只能通過布爾值和數字的方式如下:

<PriceOption id={1} yes={true} price="free" audience="for individuals" plan="Starter" /> 

吧?

+0

嗯,是的..它可能有助於認爲PriceOption = {id:1,price:「free」},它是PriceOption是一個具有屬性的對象。 (這被稱爲道具的原因) – vdj4y

回答

3

沒有花這將是對角紋理的字符串。 捲曲。 React會嘗試評估它並找到一個字符串。 最終結果是一樣的。只需通過告訴反應來評估它就可以採取更長的步驟。

,而第二個例子:

<div ref={(c) => this._input = c} 
// react will run the function inside ref, 
// the arrow function always return something, that's js not react 
// this is javascript ES6, not react, 

// the function above is the same as: 
<div ref= { (c) => {     // arrow function returns a closure 
       return this._input = c // the closure is returning this._input 
      }) 
} 

所以是的,在反應過來,這<div ref={} />將告訴反應來評價無論花裏面。

1

在陣營JSX語法,大括號內,使用Javascript進行評價。如文檔https://facebook.github.io/react/docs/jsx-in-depth.html#attribute-expressions所述,

要將JavaScript表達式用作屬性值,請將表達式換成一對大括號({})而不是引號(「」)。

在第一個示例中,表達式"diagonal-texture"的計算結果與字符串"diagonal-texture"的計算結果相同。第二個例子中的表達式並非如此。

相關問題