亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

React學(xué)習(xí)筆記—JSX

marser / 3224人閱讀

摘要:使用,不一定非要使用語(yǔ)法,可以使用原生的進(jìn)行開(kāi)發(fā)。注意標(biāo)簽的屬性和,需要寫(xiě)成和。因?yàn)閮蓚€(gè)屬性是的保留字和關(guān)鍵字。在的設(shè)定中,初始化完后,是不可變的。改變會(huì)引起無(wú)法想象的后果。重要的是這個(gè)過(guò)程是由操控的,不是手動(dòng)添賦值的屬性。

深入JSX

JSX可以看作JavaScript的拓展,看起來(lái)有點(diǎn)像XML。使用React,可以進(jìn)行JSX語(yǔ)法到JavaScript的轉(zhuǎn)換。

Why JSX?

使用React,不一定非要使用JSX語(yǔ)法,可以使用原生的JS進(jìn)行開(kāi)發(fā)。但是React作者強(qiáng)烈建議我們使用JSX,因?yàn)镴SX在定義類似HTML這種樹(shù)形結(jié)構(gòu)時(shí),十分的簡(jiǎn)單明了。簡(jiǎn)明的代碼結(jié)構(gòu)更利于開(kāi)發(fā)和維護(hù)。
XML有著開(kāi)閉標(biāo)簽,在構(gòu)建復(fù)雜的樹(shù)形結(jié)構(gòu)時(shí),比函數(shù)調(diào)用和對(duì)象字面量更易讀??磦€(gè)直接的對(duì)比:

#使用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并不是新語(yǔ)言,也沒(méi)有改變JavaScript的語(yǔ)法,只是對(duì)JavaScript的拓展。

HTML 標(biāo)簽 vs. React 組件

React.render方法可以渲染HTML結(jié)構(gòu),也可以渲染React組件。
渲染HTML標(biāo)簽,聲明變量采用首字母小寫(xiě)

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

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

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

通過(guò)變量的聲明,來(lái)區(qū)分HTML標(biāo)簽和React組件,這個(gè)可以看作一個(gè)約定吧。

  

注意:標(biāo)簽的屬性class和for,需要寫(xiě)成className和htmlFor。因?yàn)閮蓚€(gè)屬性是JavaScript的保留字和關(guān)鍵字。無(wú)論你是否使用JSX。

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

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

React JSX將類似XML的語(yǔ)法轉(zhuǎn)化到原生的JavaScript,元素的標(biāo)簽、屬性和子元素都會(huì)被當(dāng)作參數(shù)傳給React.createElement函數(shù):

#JSX
var Nav;
var app = 
JS表達(dá)式

表達(dá)式用{}包起來(lái),不要加引號(hào),加引號(hào)就會(huì)被當(dāng)成字符串。

JSX是HTML和JavaScript混寫(xiě)的語(yǔ)法,當(dāng)遇到<,JSX就當(dāng)HTML解析,遇到{就當(dāng)JavaScript解析。

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

同JavaScript注釋一樣

單行注釋 // comments

多行注釋 /* comments */

JSX延伸屬性 不要改變props

如果提前就知道了組件的屬性的話,寫(xiě)起來(lái)很容易。例如component組件有兩個(gè)動(dòng)態(tài)的屬性foo和bar:

var component = ;

而實(shí)際上,有些屬性可能是后續(xù)添加的,我們沒(méi)辦法一開(kāi)始就確定,我們可能會(huì)寫(xiě)出下面不好的代碼:

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

這樣寫(xiě)是錯(cuò)誤的,因?yàn)槲覀兪謩?dòng)直接添加的屬性React后續(xù)沒(méi)辦法檢查到屬性類型錯(cuò)誤,也就是說(shuō),當(dāng)我們手動(dòng)添加的屬性發(fā)生類型錯(cuò)誤時(shí),在控制臺(tái)是看不到錯(cuò)誤信息的。

在React的設(shè)定中,初始化完props后,props是不可變的。改變props會(huì)引起無(wú)法想象的后果。

延伸屬性

為了解決這個(gè)問(wèn)題,React引入了屬性延伸

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

當(dāng)需要拓展我們的屬性的時(shí)候,定義個(gè)一個(gè)屬性對(duì)象,并通過(guò){...props}的方式引入,React會(huì)幫我們拷貝到組件的props屬性中。重要的是—這個(gè)過(guò)程是由React操控的,不是手動(dòng)添賦值的屬性。

需要覆蓋的時(shí)候可以這樣寫(xiě):

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

在React中寫(xiě)行內(nèi)樣式時(shí),要這樣寫(xiě),不能采用引號(hào)的書(shū)寫(xiě)方式

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

比如我們有一些內(nèi)容是用戶輸入的富文本,從后臺(tái)取到數(shù)據(jù)后展示在頁(yè)面上,希望展示相應(yīng)的樣式

var content="content";

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

結(jié)果頁(yè)面直接輸出內(nèi)容了:

React默認(rèn)會(huì)進(jìn)行HTML的轉(zhuǎn)義,避免XSS攻擊,如果要不轉(zhuǎn)義,可以這么寫(xiě):

var content="content";    

React.render(
    
, document.body );

頁(yè)面效果:

自定義HTML屬性

如果在編寫(xiě)React過(guò)程中使用了自定義屬性,React不會(huì)渲染的

React.render(
    
content
, document.body );

要想使用得這么寫(xiě):

React.render(
    
content
, document.body );

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/85618.html

相關(guān)文章

  • React.js學(xué)習(xí)筆記JSX解讀

    摘要:學(xué)習(xí)筆記之解讀前端技術(shù)不多說(shuō),大腿很粗什么是是的核心組成部分,它使用標(biāo)記的方式去直接聲明界面,界面組件之間可以互相嵌套。它的目的是通過(guò)各種編譯器將這些標(biāo)記編譯成標(biāo)準(zhǔn)的語(yǔ)言。的標(biāo)簽與函數(shù)名都是使用的駝峰命名。目前,一個(gè)的,只能返回一個(gè)節(jié)點(diǎn)。 React.js學(xué)習(xí)筆記之JSX解讀 @(前端技術(shù)) Why React? 不多說(shuō),F(xiàn)acebook大腿很粗 什么是JSX JSX是React的核心...

    tianlai 評(píng)論0 收藏0
  • 《深入react技術(shù)棧》學(xué)習(xí)筆記(一)初入React世界

    摘要:前言以深入學(xué)習(xí)技術(shù)棧為線索,記錄下學(xué)習(xí)的重要知識(shí)內(nèi)容。要傳入時(shí),必須使用屬性表達(dá)式。如果要使用自定義屬性,要使用前綴這與標(biāo)準(zhǔn)是一致的。 前言 以《深入學(xué)習(xí)react技術(shù)?!窞榫€索,記錄下學(xué)習(xí)React的重要知識(shí)內(nèi)容。本系列文章沒(méi)有涵蓋全部的react知識(shí)內(nèi)容,只是記錄下了學(xué)習(xí)之路上的重要知識(shí)點(diǎn),一方面是自己的總結(jié),同時(shí)拿出來(lái)和在學(xué)習(xí)react的人們一塊分享,共同進(jìn)步。 正文 一:rea...

    verano 評(píng)論0 收藏0
  • React學(xué)習(xí)筆記—數(shù)據(jù)展示

    摘要:我們使用最基本的事就是用來(lái)展現(xiàn)數(shù)據(jù)。使得展現(xiàn)數(shù)據(jù)變得簡(jiǎn)單,并且當(dāng)數(shù)據(jù)改變時(shí),能自動(dòng)保持的更新。使用了內(nèi)部的虛擬,當(dāng)數(shù)據(jù)發(fā)生改變,先在虛擬中計(jì)算變化,最后將變動(dòng)的部分反應(yīng)到真實(shí)的中??梢园阉醋饔兄蜖顟B(tài)并且可以返回結(jié)構(gòu)的函數(shù)。 我們使用UI最基本的事就是用來(lái)展現(xiàn)數(shù)據(jù)。React使得展現(xiàn)數(shù)據(jù)變得簡(jiǎn)單,并且當(dāng)數(shù)據(jù)改變時(shí),React能自動(dòng)保持UI的更新。 開(kāi)始 創(chuàng)建一個(gè)簡(jiǎn)單的Demo: ...

    Magicer 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<