JSX 使用說明

JSX 是什么? 有哪些需要注意

JSX實際上是語法糖, 用xml標簽Javascript代碼, 看上去結構更加清晰
一般來說,在項目上線前要把jsx代碼轉換成純js代碼,gulp-reactreact-tools

JSX 需要注意關鍵詞
由于classfor這兩個html標簽里的屬性與Javascript關鍵詞沖突, 所以需要用classNamehtmlFor代替

JSX 會丟棄非標準屬性,所以自定義屬性需要添加 data- 前綴

<div data-custom-attribute="foo" />

JSX 命名空間

一個組件有多個子組件,你希望這些子組件可以作為其父組件的屬性,那么可以像這樣用:

var Form = MyFormComponent;

var App = (
  <Form>
    <Form.Row>
      <Form.Label />
      <Form.Input />
    </Form.Row>
  </Form>
);

這樣你只需將子組件的ReactClass作為其父組件的屬性:

var MyFormComponent = React.createClass({ ... });

MyFormComponent.Row = React.createClass({ ... });
MyFormComponent.Label = React.createClass({ ... });
MyFormComponent.Input = React.createClass({ ... });

創建子元素可以直接交給JSX轉化器:

var App = (
    React.createElement(Form, null,
        React.createElement(Form.Row, null,
            React.createElement(Form.Label, null),
            React.createElement(Form.Input, null)
        )
    )
);

JSX 不能使用if條件語句,會出現語法錯誤,可以使用三目運算符

// This JSX:
<div id={if (condition) { 'msg' }}>Hello World!</div>

// Error: Is transformed to this JS:
React.createElement("div", {id: if (condition) { 'msg' }}, "Hello World!");
// 可以從轉化后的Javascript代碼中看出明顯的語法錯誤,所以要不用三目運算符,要不就這樣寫:
if (condition) <div id='msg'>Hello World!</div>
else <div>Hello World!</div>

JSX 使用...運算符

var props = { foo: x, bar: y };
var component = <Component { ...props } />;
// 這樣就相當于:
var component = <Component foo={x} bar={y} />

// 它也可以和普通的XML屬性混合使用,需要同名屬性,后者將覆蓋前者:
var props = { foo: 'default' };
var component = <Component {...props} foo={'override'} />;
console.log(component.props.foo); // 'override'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 005@關于JSX語法 轉(有所更改):React入門:關于JSX語法可以參考的資料:React.js學習筆記之J...
    驀然之間的閱讀 933評論 0 0
  • 以下內容是我在學習和研究React時,對React的特性、重點和注意事項的提取、精練和總結,可以做為React特性...
    科研者閱讀 8,282評論 2 21
  • 本筆記基于React官方文檔,當前React版本號為15.4.0。 1. 安裝 1.1 嘗試 開始之前可以先去co...
    Awey閱讀 7,778評論 14 128
  • 英雄劍 難得美人羨 白玉碎 香水夜無眠 紅塵落 不解相思苦 聽蝴蝶傾訴 桑葉不知路 時光,恍惚 千年,虛無 殘花,...
    黎瀟閱讀 267評論 0 1
  • 自我介紹一下,男,三十歲,外貿創業5年,負債過百萬,家里資產都已經抵押在銀行。 嗯你沒看錯,是負債,你應該不禁在心...
    禾熠塵閱讀 2,898評論 13 17