国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

React學習筆記—JSX

marser / 3168人閱讀

摘要:使用,不一定非要使用語法,可以使用原生的進行開發。注意標簽的屬性和,需要寫成和。因為兩個屬性是的保留字和關鍵字。在的設定中,初始化完后,是不可變的。改變會引起無法想象的后果。重要的是這個過程是由操控的,不是手動添賦值的屬性。

深入JSX

JSX可以看作JavaScript的拓展,看起來有點像XML。使用React,可以進行JSX語法到JavaScript的轉換。

Why JSX?

使用React,不一定非要使用JSX語法,可以使用原生的JS進行開發。但是React作者強烈建議我們使用JSX,因為JSX在定義類似HTML這種樹形結構時,十分的簡單明了。簡明的代碼結構更利于開發和維護。
XML有著開閉標簽,在構建復雜的樹形結構時,比函數調用和對象字面量更易讀。看個直接的對比:

#使用JSX
React.render(
    
content
, document.getElementById("example") ); #不使用JSX React.render( React.createElement("div", null, React.createElement("div", null, React.createElement("div", null, "content") ) ), document.getElementById("example") );
  

JSX并不是新語言,也沒有改變JavaScript的語法,只是對JavaScript的拓展。

HTML 標簽 vs. React 組件

React.render方法可以渲染HTML結構,也可以渲染React組件。
渲染HTML標簽,聲明變量采用首字母小寫

var myDivElement = 
; React.render(myDivElement, document.body);

渲染React組件,聲明變量采用首字母大寫

var MyComponent = React.createClass({/*...*/});
var myElement = ;
React.render(myElement, document.body);

通過變量的聲明,來區分HTML標簽和React組件,這個可以看作一個約定吧。

  

注意:標簽的屬性class和for,需要寫成className和htmlFor。因為兩個屬性是JavaScript的保留字和關鍵字。無論你是否使用JSX。

#使用JSX
React.render(
    ,
    document.getElementById("example")
);

#不使用JSX
React.render(
    React.createElement("label", {className: "xxx", htmlFor: "input"}, "content"),
    document.getElementById("example")
);
轉化

React JSX將類似XML的語法轉化到原生的JavaScript,元素的標簽、屬性和子元素都會被當作參數傳給React.createElement函數:

#JSX
var Nav;
var app = 
JS表達式

表達式用{}包起來,不要加引號,加引號就會被當成字符串。

JSX是HTML和JavaScript混寫的語法,當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。

屬性表達式
React.render(
    
1 ? "class-a" : "class-b"}>content
, document.body );
子表達式
var Nav = React.createClass({
    render: function () {
        return 
nav
} }); React.render(
{2 > 1 ?
, document.body );
注釋

同JavaScript注釋一樣

單行注釋 // comments

多行注釋 /* comments */

JSX延伸屬性 不要改變props

如果提前就知道了組件的屬性的話,寫起來很容易。例如component組件有兩個動態的屬性foo和bar:

var component = ;

而實際上,有些屬性可能是后續添加的,我們沒辦法一開始就確定,我們可能會寫出下面不好的代碼:

var component = ;
component.props.foo = x; // bad
component.props.bar = y; // also bad

這樣寫是錯誤的,因為我們手動直接添加的屬性React后續沒辦法檢查到屬性類型錯誤,也就是說,當我們手動添加的屬性發生類型錯誤時,在控制臺是看不到錯誤信息的。

在React的設定中,初始化完props后,props是不可變的。改變props會引起無法想象的后果。

延伸屬性

為了解決這個問題,React引入了屬性延伸

var props = {};
props.foo = x;
props.bar = y;
var component = ;

當需要拓展我們的屬性的時候,定義個一個屬性對象,并通過{...props}的方式引入,React會幫我們拷貝到組件的props屬性中。重要的是—這個過程是由React操控的,不是手動添賦值的屬性。

需要覆蓋的時候可以這樣寫:

var props = { foo: "default" };
var component = ;
JSX 陷阱 style屬性

在React中寫行內樣式時,要這樣寫,不能采用引號的書寫方式

React.render(
    
xxxxx
, document.body );
HTML轉義

比如我們有一些內容是用戶輸入的富文本,從后臺取到數據后展示在頁面上,希望展示相應的樣式

var content="content";

React.render(
    
{content}
, document.body );

結果頁面直接輸出內容了:

React默認會進行HTML的轉義,避免XSS攻擊,如果要不轉義,可以這么寫:

var content="content";    

React.render(
    
, document.body );

頁面效果:

自定義HTML屬性

如果在編寫React過程中使用了自定義屬性,React不會渲染的

React.render(
    
content
, document.body );

要想使用得這么寫:

React.render(
    
content
, document.body );

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85618.html

相關文章

  • React.js學習筆記JSX解讀

    摘要:學習筆記之解讀前端技術不多說,大腿很粗什么是是的核心組成部分,它使用標記的方式去直接聲明界面,界面組件之間可以互相嵌套。它的目的是通過各種編譯器將這些標記編譯成標準的語言。的標簽與函數名都是使用的駝峰命名。目前,一個的,只能返回一個節點。 React.js學習筆記之JSX解讀 @(前端技術) Why React? 不多說,Facebook大腿很粗 什么是JSX JSX是React的核心...

    tianlai 評論0 收藏0
  • 《深入react技術棧》學習筆記(一)初入React世界

    摘要:前言以深入學習技術棧為線索,記錄下學習的重要知識內容。要傳入時,必須使用屬性表達式。如果要使用自定義屬性,要使用前綴這與標準是一致的。 前言 以《深入學習react技術棧》為線索,記錄下學習React的重要知識內容。本系列文章沒有涵蓋全部的react知識內容,只是記錄下了學習之路上的重要知識點,一方面是自己的總結,同時拿出來和在學習react的人們一塊分享,共同進步。 正文 一:rea...

    verano 評論0 收藏0
  • React學習筆記—數據展示

    摘要:我們使用最基本的事就是用來展現數據。使得展現數據變得簡單,并且當數據改變時,能自動保持的更新。使用了內部的虛擬,當數據發生改變,先在虛擬中計算變化,最后將變動的部分反應到真實的中。可以把它看作有著和狀態并且可以返回結構的函數。 我們使用UI最基本的事就是用來展現數據。React使得展現數據變得簡單,并且當數據改變時,React能自動保持UI的更新。 開始 創建一個簡單的Demo: ...

    Magicer 評論0 收藏0

發表評論

0條評論

marser

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<