主頁 > 企業開發 > React基本引入和JSX語法

React基本引入和JSX語法

2023-06-26 09:09:12 企業開發

1.1 React介紹

1.1.1. 官網

  1. 英文官網: https://reactjs.org/
  2. 中文官網: https://react.docschina.org/

1.1.2. 介紹描述

  1. 用于動態構建用戶界面的 JavaScript 庫(只關注于視圖)
  2. 由Facebook開源

1.1.3. React的特點

  1. 宣告式編碼
  2. 組件化編碼
  3. React Native 撰寫原生應用
  4. 高效(優秀的Diffing演算法)

1.1.4. React高效的原因

  1. 使用虛擬(virtual)DOM, 不總是直接操作頁面真實DOM,
  2. DOM Diffing演算法, 最小化頁面重繪,

1.2  React的基本使用

1.2.1 相關js庫

  1. react.js:React核心庫,
  2. react-dom.js:提供操作DOM的react擴展庫,
  3. babel.min.js:決議JSX語法代碼轉為JS代碼的庫,

引入時必須講究順序, react.js要在react-dom.js之前

1     <script type="text/javascript" src="../js/react.development.js"></script>
2     <!-- 引入react-dom,用于支持react操作DOM -->
3     <script type="text/javascript" src="../js/react-dom.development.js"></script>
4     <!-- 引入babel,用于將jsx轉為js -->
5     <script type="text/javascript" src="../js/babel.min.js"></script>

或使用CDN引入

1     <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
2     <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
3     <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

 

1.2.2 使用React

不使用腳手架直接html檔案里引入

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>hello_react</title>
 6 </head>
 7 <body>
 8     <!-- 準備好一個“容器” -->
 9     <div id="test"></div>
10 
11     <!-- 引入react核心庫 -->
12     <script type="text/javascript" src="../js/react.development.js"></script>
13     <!-- 引入react-dom,用于支持react操作DOM -->
14     <script type="text/javascript" src="../js/react-dom.development.js"></script>
15     <!-- 引入babel,用于將jsx轉為js -->
16     <script type="text/javascript" src="../js/babel.min.js"></script>
17 
18     <script type="text/babel" > /* 此處一定要寫babel */
19         //1.創建虛擬DOM
20         const VDOM = <h1>Hello,React</h1> /* 此處一定不要寫引號,因為不是字串 */
21         //2.渲染虛擬DOM到頁面
22         ReactDOM.render(VDOM,document.getElementById('test'))
23     </script>
24 </body>
25 </html>

效果圖如下,可以看到已經完成渲染

1.2.3  虛擬DOM與真實DOM

介紹中提到,react的優勢有通過diff演算法減少頁面的重繪和重排來提升性能,所以就需要虛擬DOM的使用,我們編碼時基本只需要操作react的虛擬DOM相關資料, react會轉換為真實DOM變化而更新界面,

 

關于虛擬DOM:

  1. 本質是Object型別的物件(一般物件)
  2. 虛擬DOM比較“輕”,真實DOM比較“重”,因為虛擬DOM是React內部在用,無需真實DOM上那么多的屬性,
  3. 虛擬DOM最侄訓被React轉化為真實DOM,呈現在頁面上,

 

 1         const VDOM = (  /* 此處一定不要寫引號,因為不是字串 */
 2             <h1 id="title">
 3                 <span>Hello,React</span>
 4             </h1>
 5         )
 6         //2.渲染虛擬DOM到頁面
 7         ReactDOM.render(VDOM,document.getElementById('test'))
 8 
 9         const TDOM = document.getElementById('demo')
10         console.log('虛擬DOM',VDOM);
11         console.log('真實DOM',TDOM);

 

 

 

1.2.4 創建虛擬DOM的兩種方式

1.純JS式(不推薦)

React提供了一些API來創建一種 “特別” 的一般js物件 ,下面創建的就是一個簡單的虛擬DOM物件

const VDOM = React.createElement('標簽',{屬性名1:屬性值1,屬性名2:屬性值2},'內容')

但是大多數時候創建元素時都會遇到多層元素嵌套,比如下面的代碼,一個h1標簽里面裝著一個span標簽,就需要2次調React.createElement()方法,如果層數更多將非常不方便,而且對于查看內部的元素結構也非常不方便

const VDOM = React.createElement('h1',{id:'title'},React.createElement('span',{},'Hello,React'))

2.JSX方式

創建同樣的結構,明顯JSX更加清晰簡單

 1     <script type="text/babel" > /* 此處一定要寫babel */
 2         //1.創建虛擬DOM
 3         const VDOM = (  /* 此處一定不要寫引號,因為不是字串 */
 4             <h1 id="title">
 5                 <span>Hello,React</span>
 6             </h1>
 7         )
 8         //2.渲染虛擬DOM到頁面
 9         ReactDOM.render(VDOM,document.getElementById('test'))
10     </script>

因為這里是JSX語法,不是普通的JS語法,所以書寫的時候有一些差異,比如html結構不加引號直接可以寫在里面作為虛擬DOM,

JSX語法規則

1.定義虛擬DOM時,不要寫引號,

2.標簽中混入JS運算式時要用{},

3.樣式的類名指定不要用class,要用className, 4.行內樣式,要用style={{key:value}}的形式去寫, 5.只有一個根標簽 6.標簽必須閉合 7.標簽首字母 (1).若小寫字母開頭,則將該標簽轉為html中同名元素,若html中無該標簽對應的同名元素,則報錯, (2).若大寫字母開頭,react就去渲染對應的組件,若組件沒有定義,則報錯,   以下是JSX語法操作樣式和屬性的例子,對于back這個類,直接在ul中使用字串對className屬性進行賦值,串列渲染,需要形成一個陣列,所以使用大括號包裹陣列的方式,{ arr },陣列的具體內容是多個<li>,這里先是使用了JSX的行內樣式來控制每個<li>的樣式,這里的樣式都是通過物件的形式來書寫,多個單詞組成的屬性名要用小駝峰命名(第一個單詞以小寫字母開始;從第二個單詞開始以后的每個單詞的首字母都采用大寫字母), 在串列渲染中,必須要加入key這個屬性作為元素的唯一標識,屬性值一般是不相同的值比如id、手機號、身份證號、學號等唯一值,此處僅用于資料的展示,key就用index(diff演算法相關內容),
 1 <style>
 2         .back {
 3             background-color: red;
 4         }
 5     </style>
 6 </head>
 7 <body>
 8     <div id="root"></div>
 9 </body>
10 <script type="text/babel">
11     const data = ['Vue', 'React', 'Angular']
12     const VDom = (
13         <ul className="back" >
14             {data.map((item, index) => {
15                 return <li style={{ color: 'white', fontSize: "28px" }} key={index} >{item}</li>
16             })}
17         </ul>
18     )
19     ReactDOM.render(VDom, document.getElementById('root'))
20 
21 </script>
22 </html>

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/555957.html

標籤:其他

上一篇:前端Vue仿京東加入購物車彈框立即購買彈框shopDialog自定義彈框內容

下一篇:返回列表

標籤雲
其他(161604) Python(38248) JavaScript(25513) Java(18259) C(15238) 區塊鏈(8272) C#(7972) AI(7469) 爪哇(7425) MySQL(7266) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4606) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2437) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) HtmlCss(1972) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • React基本引入和JSX語法

    1.1 React介紹 1.1.1. 官網 英文官網: https://reactjs.org/ 中文官網: https://react.docschina.org/ 1.1.2. 介紹描述 用于動態構建用戶界面的 JavaScript 庫(只關注于視圖) 由Facebook開源 1.1.3. Re ......

    uj5u.com 2023-06-26 09:09:12 more
  • 前端Vue仿京東加入購物車彈框立即購買彈框shopDialog自定義彈框

    #### 前端Vue仿京東加入購物車彈框立即購買彈框shopDialog自定義彈框內容, 下載完整代碼請訪問uni-app插件市場地址:https://ext.dcloud.net.cn/plugin?id=13183 #### 效果圖如下: ![](https://p3-juejin.byteim ......

    uj5u.com 2023-06-26 09:09:06 more
  • 記錄--強制快取這么暴力,為什么不使用協商快取

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前段時間在看面經的時候,發現很多份面經中都被問到了 強快取 和 協商快取。因此我覺得有必要寫一篇文章來好好聊聊這兩者。 強快取和協商快取 瀏覽器快取是瀏覽器在本地磁盤對用戶最近請求過的檔案進行存盤,當訪問者再次訪問同一頁面時,瀏覽器就可以 ......

    uj5u.com 2023-06-26 09:03:19 more
  • 車規級耐高溫BLE5.2協議串口轉藍牙模塊E104-BT53C3產品簡介

    藍牙耐高溫車規級BLE5.2藍牙協議串口轉藍牙模塊E104-BT53C3新品即將上架: 藍牙模塊通信介面:UART串口通信 藍牙模塊作業頻率:2402~2480MHz 車規級藍牙模塊藍牙協議:BLE 5.2 通信距離:170m 天線介面:PCB 產品尺寸:23*16mm 產品簡介:E104-BT53 ......

    uj5u.com 2023-06-26 08:57:48 more
  • 驅動開發:內核遠程執行緒實作DLL注入

    在筆者上一篇文章`《驅動開發:內核RIP劫持實作DLL注入》`介紹了通過劫持RIP指標控制程式執行流實作插入DLL的目的,本章將繼續探索全新的注入方式,通過`NtCreateThreadEx`這個內核函式實作注入DLL的目的,需要注意的是該函式在微軟系統中未被匯出使用時需要首先得到該函式的入口地址,... ......

    uj5u.com 2023-06-26 08:57:32 more
  • 車規級耐高溫BLE5.2協議串口轉藍牙模塊E104-BT53C3產品簡介

    藍牙耐高溫車規級BLE5.2藍牙協議串口轉藍牙模塊E104-BT53C3新品即將上架: 藍牙模塊通信介面:UART串口通信 藍牙模塊作業頻率:2402~2480MHz 車規級藍牙模塊藍牙協議:BLE 5.2 通信距離:170m 天線介面:PCB 產品尺寸:23*16mm 產品簡介:E104-BT53 ......

    uj5u.com 2023-06-26 08:56:54 more
  • 驅動開發:內核遠程執行緒實作DLL注入

    在筆者上一篇文章`《驅動開發:內核RIP劫持實作DLL注入》`介紹了通過劫持RIP指標控制程式執行流實作插入DLL的目的,本章將繼續探索全新的注入方式,通過`NtCreateThreadEx`這個內核函式實作注入DLL的目的,需要注意的是該函式在微軟系統中未被匯出使用時需要首先得到該函式的入口地址,... ......

    uj5u.com 2023-06-26 08:56:15 more
  • 百度Amis+React低代碼實踐

    ### 背景 在專案中有集成低代碼平臺的想法,經過多方對比最后選擇了 amis,主要是需要通過 amis 進行頁面配置,匯出 json 供移動端和 PC 端進行渲染,所以接下來講一下近兩周研究 amis 的新的以及一些簡單經驗,供大家參考. ### 什么是 amis amis 是一個低代碼前端框架, ......

    uj5u.com 2023-06-25 08:11:15 more
  • React SSG - 也寫個 Demo 吧

    上次寫了一個 `SSR` 的 `DEMO`,今天寫個小 `Demo` 來從頭實作一下 `react` 的 `SSG`,來理解下 `SSG` 是如何實作的。 ## 什么是 SSG `SSG` 即 `Static Site Generation` 靜態站點生成,是指將在構建時就提前生成靜態 `HTML` ......

    uj5u.com 2023-06-25 08:11:05 more
  • 驅動開發:摘除InlineHook內核鉤子

    在筆者上一篇文章`《驅動開發:內核層InlineHook掛鉤函式》`中介紹了通過替換`函式`頭部代碼的方式實作`Hook`掛鉤,對于ARK工具來說實作掃描與摘除`InlineHook`鉤子也是最基本的功能,此類功能的實作一般可在應用層進行,而驅動層只需要保留一個`讀寫位元組`的函式即可,將復雜的流程放... ......

    uj5u.com 2023-06-25 08:05:06 more