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

watak

考慮這個變量聲明:

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

這個有趣的標簽語法既不是字符串也不是HTML。

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

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

在JSX中嵌入表達式

您可以通過將其包含在大括號中來嵌入JSX中的任何JavaScript表達式。

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

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分成多行。盡管這不是必需的,但當我們這樣做時,我們還建議將它包裝在括號中以避免自動分號插入的缺陷。

JSX也是一個表達式

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

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

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

使用JSX指定屬性

您可以使用引號將字符串文字指定為屬性:

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

您也可以使用大括號將JavaScript表達式嵌入屬性中:

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

在屬性中嵌入JavaScript表達式時,請勿將大括號括起來。您應該使用引號(用于字符串值)或大括號(用于表達式),但不能同時使用同一個屬性。

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

用JSX指定子

如果標簽為空,您可以立即關閉它/>,例如XML:

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

JSX標簽可能包含子項:

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>;

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

JSX表示對象

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

這兩個例子是相同的:

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

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

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

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

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

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

Artikel sebelumnya: Artikel seterusnya: