成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

marser / 3226人閱讀

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

深入JSX

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

Why JSX?

使用React,不一定非要使用JSX語法,可以使用原生的JS進(jìn)行開發(fā)。但是React作者強(qiáng)烈建議我們使用JSX,因?yàn)镴SX在定義類似HTML這種樹形結(jié)構(gòu)時(shí),十分的簡單明了。簡明的代碼結(jié)構(gòu)更利于開發(fā)和維護(hù)。
XML有著開閉標(biāo)簽,在構(gòu)建復(fù)雜的樹形結(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并不是新語言,也沒有改變JavaScript的語法,只是對(duì)JavaScript的拓展。

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

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

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

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

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

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

  

注意:標(biāo)簽的屬性class和for,需要寫成className和htmlFor。因?yàn)閮蓚€(gè)屬性是JavaScript的保留字和關(guān)鍵字。無論你是否使用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的語法轉(zhuǎn)化到原生的JavaScript,元素的標(biāo)簽、屬性和子元素都會(huì)被當(dāng)作參數(shù)傳給React.createElement函數(shù):

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

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

JSX是HTML和JavaScript混寫的語法,當(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

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

var component = ;

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

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

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

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

延伸屬性

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

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

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

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

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

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

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

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

var content="content";

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

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

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

var content="content";    

React.render(
    
, document.body );

頁面效果:

自定義HTML屬性

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

React.render(
    
content
, document.body );

要想使用得這么寫:

React.render(
    
content
, document.body );

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

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

相關(guān)文章

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

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

    tianlai 評(píng)論0 收藏0
  • 《深入react技術(shù)?!?em>學(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)容。本系列文章沒有涵蓋全部的react知識(shí)內(nèi)容,只是記錄下了學(xué)習(xí)之路上的重要知識(shí)點(diǎn),一方面是自己的總結(jié),同時(shí)拿出來和在學(xué)習(xí)react的人們一塊分享,共同進(jìn)步。 正文 一:rea...

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

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<