国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

玩轉(zhuǎn) React【第02期】:戀上 React 模板 JSX

ivydom / 1426人閱讀

摘要:今天我們來看一種優(yōu)雅的編寫的代碼的一種方式。有了之后,可以幫助我們在編寫模板的時(shí)候結(jié)構(gòu)更加簡單清晰。以上是筆者歸納總結(jié),如有誤之處,歡迎指出。


往期回顧

前文中我們講解了利用 ReactElement 來編寫React程序,但是我們也看到這種方式編寫 React 特別的麻煩,而且層級結(jié)構(gòu)特別不清晰。今天我們來看一種優(yōu)雅的編寫React的代碼的一種方式 JSX。
JSX

JSX就是把 js 和 xml 結(jié)合起來編寫程序的一種格式,簡單的說就是給我們的 JS 添加了 XML 的語法擴(kuò)展。有了 JSX 之后,可以幫助我們在編寫模板的時(shí)候結(jié)構(gòu)更加簡單清晰。 我們可以對比一下,咱們使用 ReactElement 和 JSX 編寫同一個(gè)結(jié)構(gòu)時(shí)的區(qū)別,大家就會(huì)喜歡上 JSX;

利用 ReactElement 編寫的結(jié)構(gòu)

let Title = React.createElement("h1",null,"頁面標(biāo)題"); 
let Header = React.createElement("header",null,Title);  
let Sider = React.createElement("aside",null,"側(cè)邊欄");  
let Content = React.createElement("article",null,"頁面內(nèi)容"); let Main = React.createElement("div",null,Sider,Content); 
let Footer = React.createElement("footer",null,"頁面底部");  
let Page = React.createElement(      "div",      null,
     Header,
     Main,
     Footer);
 ReactDOM.render(
     Page,
     document.getElementById("root")
 );

利用 JSX 編寫的結(jié)構(gòu)

ReactDOM.render(
        

頁面標(biāo)題

頁面內(nèi)容
頁面底部
document.getElementById("root") );

從上述示例中我們看到在 JSX 中我們可以直接使用我們熟悉的 HTML 標(biāo)簽來書寫我們的模板,這樣的話結(jié)構(gòu)層級非常清晰,也便于我們維護(hù),當(dāng)然上手也更便捷。

JSX 使用時(shí)的注意事項(xiàng)

在使用 JSX 中,不能嵌套多個(gè)同級標(biāo)簽,一定要在外邊加一個(gè)父級
使用 JSX 時(shí),我們需要使用 Babel 來進(jìn)行編譯,所以必須引入 Babel 并且在 script 上 添加 type="text/babel" 來提示 babel 編譯我們 script 中的代碼,如下所示:

    

使用 JSX 時(shí),當(dāng)我們要寫的是一個(gè) HTML 標(biāo)簽時(shí),請全部小寫
使用 JSX 時(shí),所有標(biāo)簽都必須閉合單標(biāo)簽 <單標(biāo)簽 /> 也一樣必須閉合

插值表達(dá)式

當(dāng)我們需要在 JSX 中插入一個(gè)js數(shù)據(jù)時(shí),我們就需要使用插值表達(dá)式。 在 JSX 中,讀到{} 時(shí),它就會(huì)認(rèn)為你要插入一條js數(shù)據(jù),這個(gè) {} 就是插值表達(dá)式,使用示例如下:

    let a = "hello";
    let b = "React";
    ReactDOM.render(
        

{a + b}

, document.getElementById("root") );

插值表達(dá)式在什么時(shí)候使用

當(dāng)我們需要在 JSX 中使用 JS 中的數(shù)據(jù)的時(shí)候,我們就需要使用差值表達(dá)式
當(dāng)我們要在 JSX 中添加 注釋的時(shí)候,也需要使用插值表達(dá)式 {/ 在這里寫JSX的注釋 /}

使用插值表達(dá)式時(shí)的注意事項(xiàng)

{}中,接收一個(gè) JS 表達(dá)式,可以是我們的算術(shù)表達(dá)式,變量 或函數(shù)調(diào)用, 最終 {} 接收的是表達(dá)式 計(jì)算的結(jié)果
{}中,接收的是 函數(shù)調(diào)用時(shí),該函數(shù)需要由返回值
{}中,不能寫 if else 以及 switch 這些流程控制語句,但是可以使用三目表達(dá)式 來進(jìn)行判斷,示例如下:

    let a = 10;
          let b = 20;
          ReactDOM.render(
               

{a > b?"正確":"錯(cuò)誤"}

, document.getElementById("root") );

{}中,不能寫 for 或者 whlie 這些循環(huán)語句,可以使用數(shù)組方法代替,示例如下:

    let arr = [
       "這是第一項(xiàng)",
       "這是第二項(xiàng)",
       "這是第三項(xiàng)"
      ]
      ReactDOM.render(
           
    {arr.map((item,index)=>{ /* 當(dāng)我們要向 JSX 中添加一組元素時(shí),一定要設(shè)置 key 屬性,具體內(nèi)容 我們會(huì)在后邊的文章中講到 */ return
  • {item}
  • })}
, document.getElementById("root") );

不同類型數(shù)據(jù)在插值表達(dá)式中的數(shù)據(jù)輸出

字符串、數(shù)字:原樣輸出
布爾值、空、未定義:輸出空值,也不會(huì)有錯(cuò)誤
對象:不能直接輸出,但是可以通過其他方式,Object.values、Object.keys 等方法去解析對象
數(shù)組:支持直接輸出,默認(rèn)情況下把數(shù)組通過空字符串進(jìn)行拼接

JSX的屬性操作

屬性值加了引號,那么就是一個(gè)普通的屬性書寫方式

    ReactDOM.render(
          

React筆記

, document.getElementById("root") );

屬性值可以直接寫成差值表達(dá)式

    let title = "React筆記" 
      ReactDOM.render(
          

React筆記

, document.getElementById("root") );

class:在 JSX 中需要使用 className 屬性去代替 class

ReactDOM.render(
      

React筆記

, document.getElementById("root") );

style:在 JSX 中 style 的值只能是對象 style={{ property : value }}

let style = {
  borderBottom: "1px solid #000"
  }
  ReactDOM.render(
      

React筆記

, document.getElementById("root") ); ReactDOM.render(

React筆記

, document.getElementById("root") );

看完了 JSX 的基本操作之后,我們來看一個(gè)小例子,如何通過數(shù)據(jù)來生成一個(gè)簡單的視圖

let data = {
        title: "巔峰榜·熱歌",
        details: [
                {
                name: "體面",
                message: "《前任3:再見前任》電影插曲"
                },
            
                {
                name: "說散就散",
                message: "《前任3:再見前任》電影主題曲"
                },
            
                {
                name: "BINGBIAN病變 (女聲版) ",
                message: "抖音熱門歌曲"
                }
        ]
 }
    ReactDOM.render(
        

{data.title}

    {data.details.map((item,index)=>{ return (
  • {item.name}

    {item.message}

  • ); })}
, document.getElementById("root") );

關(guān)于 JSX 的基本使用我們就說到這,在下一章節(jié)中我們要說到一個(gè)比較重的內(nèi)容--組件。
當(dāng)然在 React 中編寫組件的方式也會(huì)有多種,我們在下一篇中詳細(xì)的說。
——以上是筆者歸納總結(jié),如有誤之處,歡迎指出。

訂閱號ID:Miaovclass
關(guān)注妙味訂閱號:“妙味前端”,為您帶來優(yōu)質(zhì)前端技術(shù)干貨;

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98850.html

相關(guān)文章

  • 玩轉(zhuǎn) React03】:邂逅 React 組件

    摘要:中組件可以將切分成一些的獨(dú)立的可復(fù)用的部件。組件的返回值是一個(gè)需要在也頁面上顯示的元素,也就是說中組件必須有返回值。 showImg(https://segmentfault.com/img/bVbjgxB?w=900&h=383); 上期回顧 前文我們講解了 React 模板 JSX,接著我們繼續(xù)來看看 React 組件又是如何工作的呢? 組件化開發(fā)到了今天已經(jīng)是大家的共識,在 R...

    Lin_R 評論0 收藏0
  • react-template-easily(簡單易用的react前端工程化模板)

    摘要:是一套以技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端和開發(fā)。其中包含常用常用組件,精細(xì)計(jì)算的,以及諸多項(xiàng)目的實(shí)踐。 react-template-easily Desc: react-template-easily 是一套以react技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端H5, webapp和hybirdApp開發(fā)。其中包含常用20+常用組件,精細(xì)計(jì)算的rem,以及諸多項(xiàng)目的實(shí)踐。 URL: http...

    he_xd 評論0 收藏0
  • react-template-easily(簡單易用的react前端工程化模板)

    摘要:是一套以技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端和開發(fā)。其中包含常用常用組件,精細(xì)計(jì)算的,以及諸多項(xiàng)目的實(shí)踐。 react-template-easily Desc: react-template-easily 是一套以react技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端H5, webapp和hybirdApp開發(fā)。其中包含常用20+常用組件,精細(xì)計(jì)算的rem,以及諸多項(xiàng)目的實(shí)踐。 URL: http...

    rottengeek 評論0 收藏0
  • 玩轉(zhuǎn) React(三)- JavaScript代碼里寫HTML一樣可以很優(yōu)雅

    摘要:但是隨著程序邏輯越來越復(fù)雜,業(yè)務(wù)邏輯代碼跟代碼混到一起就變得越來越難以維護(hù),所以就有了開發(fā)模式。其實(shí)只是給加了點(diǎn)糖上面這種在中寫類似代碼的語法被稱為。你可以理解為擴(kuò)展版的。尤其是對一些相對還比較流行的框架或技術(shù),更是如此。 這是《玩轉(zhuǎn) React》系列的第三篇,看到本篇的標(biāo)題,了解過 React 的同學(xué)可能已經(jīng)大致猜到我要講什么了,本篇中要講的內(nèi)容對于剛接觸 React 的同學(xué)來說,可...

    android_c 評論0 收藏0

發(fā)表評論

0條評論

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