亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

characters

考慮這個(gè)變量聲明:

const element = <h1>Hello, world!</h1>;

這個(gè)有趣的標(biāo)簽語法既不是字符串也不是HTML。

它被稱為JSX,它是JavaScript的語法擴(kuò)展。我們建議在React中使用它來描述UI的外觀。JSX可能會(huì)提醒您一種模板語言,但它具有JavaScript的全部功能。

JSX生成React“元素”。我們將在下一節(jié)探討將它們呈現(xiàn)給DOM。在下面,您可以找到啟動(dòng)JSX所需的基礎(chǔ)知識(shí)。

在JSX中嵌入表達(dá)式

您可以通過將其包含在大括號(hào)中來嵌入JSX中的任何JavaScript表達(dá)式。

例如2 + 2,user.firstNameformatName(user)都是有效的表達(dá)式:

function formatName(user) {  return user.firstName + ' ' + user.lastName;}const user = {
  firstName: 'Harper',
  lastName: 'Perez'};const element = (  <h1>
    Hello, {formatName(user)}!  </h1>);ReactDOM.render(
  element,
  document.getElementById('root'));

為了便于閱讀,我們將JSX分成多行。盡管這不是必需的,但當(dāng)我們這樣做時(shí),我們還建議將它包裝在括號(hào)中以避免自動(dòng)分號(hào)插入的缺陷。

JSX也是一個(gè)表達(dá)式

編譯之后,JSX表達(dá)式就變成了常規(guī)的JavaScript對(duì)象。

這意味著您可以在if語句和for循環(huán)中使用JSX ,將其分配給變量,將其作為參數(shù)接受,并從函數(shù)中返回:

function getGreeting(user) {  if (user) {    
    return <h1>Hello, {formatName(user)}!</h1>;  }  
    return <h1>Hello, Stranger.</h1>;
}

使用JSX指定屬性

您可以使用引號(hào)將字符串文字指定為屬性:

const element = <div tabIndex="0"></div>;

您也可以使用大括號(hào)將JavaScript表達(dá)式嵌入屬性中:

const element = <img src={user.avatarUrl}></img>;

在屬性中嵌入JavaScript表達(dá)式時(shí),請(qǐng)勿將大括號(hào)括起來。您應(yīng)該使用引號(hào)(用于字符串值)或大括號(hào)(用于表達(dá)式),但不能同時(shí)使用同一個(gè)屬性。

警告:   由于JSX比HTML更接近JavaScript,因此React DOM使用camelCase屬性命名約定而不是HTML屬性名稱。例如,class變成classNameJSX,tabindex成為tabIndex。

用JSX指定子

如果標(biāo)簽為空,您可以立即關(guān)閉它/>,例如XML:

const element = <img src={user.avatarUrl} />;

JSX標(biāo)簽可能包含子項(xiàng):

const element = (  <div>    <h1>Hello!</h1>    <h2>Good to see you here.</h2>  </div>);

JSX防止注入攻擊

在JSX中嵌入用戶輸入是安全的:

const title = response.potentiallyMaliciousInput;// This is safe:const element = <h1>{title}</h1>;

默認(rèn)情況下,React DOM 在渲染之前轉(zhuǎn)義嵌入在JSX中的任何值。因此它確保您永遠(yuǎn)不會(huì)注入任何未明確寫入應(yīng)用程序的內(nèi)容。在呈現(xiàn)之前,所有內(nèi)容都會(huì)轉(zhuǎn)換為字符串。這有助于防止XSS(跨站點(diǎn)腳本)攻擊。

JSX表示對(duì)象

Babel將JSX編譯為React.createElement()調(diào)用。

這兩個(gè)例子是相同的:

const element = (  <h1 className="greeting">
    Hello, world!  </h1>);
const element = React.createElement(  'h1',  {className: 'greeting'},  'Hello, world!');

React.createElement() 執(zhí)行一些檢查以幫助您編寫無錯(cuò)代碼,但本質(zhì)上它會(huì)創(chuàng)建一個(gè)如下所示的對(duì)象:

// Note: this structure is simplifiedconst element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world'  }};

這些對(duì)象被稱為“React元素”。你可以把它們想象成你想要在屏幕上看到的東西的描述。React讀取這些對(duì)象并使用它們來構(gòu)建DOM并使其保持最新狀態(tài)。

我們將在下一節(jié)探討將React元素渲染到DOM。

提示:   我們建議您使用“Babel”語言定義用于所選編輯器,以便ES6和JSX代碼都能正確突出顯示。本網(wǎng)站使用與其兼容的Oceanic Next色彩方案。

Previous article: Next article: