摘要:使用,不一定非要使用語法,可以使用原生的進行開發。注意標簽的屬性和,需要寫成和。因為兩個屬性是的保留字和關鍵字。在的設定中,初始化完后,是不可變的。改變會引起無法想象的后果。重要的是這個過程是由操控的,不是手動添賦值的屬性。
深入JSX
JSX可以看作JavaScript的拓展,看起來有點像XML。使用React,可以進行JSX語法到JavaScript的轉換。
Why JSX?使用React,不一定非要使用JSX語法,可以使用原生的JS進行開發。但是React作者強烈建議我們使用JSX,因為JSX在定義類似HTML這種樹形結構時,十分的簡單明了。簡明的代碼結構更利于開發和維護。
XML有著開閉標簽,在構建復雜的樹形結構時,比函數調用和對象字面量更易讀。看個直接的對比:
#使用JSX React.render(, document.getElementById("example") ); #不使用JSX React.render( React.createElement("div", null, React.createElement("div", null, React.createElement("div", null, "content") ) ), document.getElementById("example") );content
HTML 標簽 vs. React 組件JSX并不是新語言,也沒有改變JavaScript的語法,只是對JavaScript的拓展。
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 = ; #native JS var Nav; var app = React.createElement(Nav, {color:"blue"});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 );div}
同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(HTML轉義xxxxx, document.body );
比如我們有一些內容是用戶輸入的富文本,從后臺取到數據后展示在頁面上,希望展示相應的樣式
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解讀 @(前端技術) Why React? 不多說,Facebook大腿很粗 什么是JSX JSX是React的核心...
摘要:前言以深入學習技術棧為線索,記錄下學習的重要知識內容。要傳入時,必須使用屬性表達式。如果要使用自定義屬性,要使用前綴這與標準是一致的。 前言 以《深入學習react技術棧》為線索,記錄下學習React的重要知識內容。本系列文章沒有涵蓋全部的react知識內容,只是記錄下了學習之路上的重要知識點,一方面是自己的總結,同時拿出來和在學習react的人們一塊分享,共同進步。 正文 一:rea...
摘要:我們使用最基本的事就是用來展現數據。使得展現數據變得簡單,并且當數據改變時,能自動保持的更新。使用了內部的虛擬,當數據發生改變,先在虛擬中計算變化,最后將變動的部分反應到真實的中。可以把它看作有著和狀態并且可以返回結構的函數。 我們使用UI最基本的事就是用來展現數據。React使得展現數據變得簡單,并且當數據改變時,React能自動保持UI的更新。 開始 創建一個簡單的Demo: ...
閱讀 2947·2023-04-25 22:16
閱讀 2093·2021-10-11 11:11
閱讀 3247·2019-08-29 13:26
閱讀 593·2019-08-29 12:32
閱讀 3409·2019-08-26 11:49
閱讀 2987·2019-08-26 10:30
閱讀 1939·2019-08-23 17:59
閱讀 1507·2019-08-23 17:57