React入門 jsx學習筆記

一、JSX介紹

概念:JSX是 JavaScript XML(HTML)的縮寫,表示在 JS 代碼中書寫 HTML 結構

作用:在React中創建HTML結構(頁面UI結構)

優勢:

  1. 采用類似于HTML的語法,降低學習成本,會HTML就會JSX
  2. 充分利用JS自身的可編程能力創建HTML結構

?JSX 并不是標準的 JS 語法,是 JS 的語法擴展,瀏覽器默認是不識別的,腳手架中內置的 @babel/plugin-transform-react-jsx 包,用來解析該語法,將聲明式解析成命令式

二、JSX基礎

1、JSX中使用js表達式

在JSX中使用表達式

//1識別常規變量
//2原生js方法調用
//3三元運算符 常用
const name = "joy booy";
const getAge=()=>{return 17}
const FLAG=truefunction App() {return <div className="App">{name}{getAge()}{FLAG?'666':'888'}</div>;
}export default App

可以使用的表達式:

字符串、數組、布爾值,null \ undefined \ object([ ] / { })

1+2、'abc'.split(' ')、['a', 'b'].join('-')

fn()? ?都可以寫在{ }中?

if 語句 / switch-case 語句 / 變量聲明語句,這些叫做語句,不是表達式,不能出現在 {} 中!!

PS:export default App :用于從腳本文件中導出單個類、函數,沒有這句,其他文件中就無法導入這個對象,無效棄用

?2、jsx列表渲染

頁面的構建離不開重復的列表結構,比如歌曲列表,商品列表等,vue中用的是v-for,react這邊如何實現呢?

使用數組的map方法

// 來個列表
//技術方案:map重復渲染的是那個模板,就return誰
//注意:遍歷列表時同樣需要一個類型為number/string不可重復的key,提高diff性能
//key僅僅在內部使用,不會出現在真實的dom結構中
const songs = [{ id: 1, name: "癡心絕對" },{ id: 2, name: "粉色海洋" },{ id: 3, name: "夏天" },
];function App() {return (<div className="App"><ul>{songs.map((item) => (<li>{item.name}</li>//或map(song=> <li key={song.id}>{song.name}</li>)))}</ul></div>);
}export default App;

?

3、JSX條件渲染

滿足一定條件才渲染,根據是否滿足條件生成HTML結構,比如Loading效果

可以使用 三元運算符 或? ?邏輯與(&&)運算符

//技術方案:三元表達式常用  邏輯&&運算
// 來個布爾值
const flag = true
function App() {return (<div className="App">{/* 條件渲染字符串 */}{flag ? 'react真有趣' : 'vue真有趣'}{/* 條件渲染標簽/組件 */}{flag && <span>this is span</span> }</div>)
}
export default App

4、JSX模板精簡原則

原則:模板中的邏輯盡量保持精簡

復雜的多分支的邏輯 收斂為一個函數 通過一個專門的函數來寫分支邏輯 模板中只負責調用

const getHtag = (type) => {if (type === 1) {return <h1>this is h1</h1>;}if (type === 2) {return <h2>this is h2</h2>;}if (type === 3) {return <h3>this is h3</h3>;}
};function App() {return (<div className="App">{getHtag(1)}{getHtag(2)}{getHtag(3)}</div>);
}export default App;

?

5、JSX樣式處理

行內樣式--在元素身上綁定一個style屬性即可

function App() {return (< div className="App"><span style={{color:'red',fontSize:'30px'}}>this is nb span</span> </div>)
}
export default App;

?或者,模板精簡化

const style = {color: 'blue',fontSize: "10px"
};function App() {return (< div className="App"><span style={style}>this is nb span</span> </div>)
}
export default App;

?

類名樣式--在元素身上綁定一個className屬性即可

新建個.cs文件,用來給App.js使用

?

import './app.css';
const style = {color: "blue",fontSize: "10px"
}function App() {return (<div className="App"><span style={style}>this is nb span</span><span className='active'>測試類名樣式</span></div>)
}export default App

?

6、JSX動態類名控制

動態控制active類名,滿足條件才有

return (<div className="App"><span style={style}>this is nb span</span><span className='active'>測試類名樣式</span><span className={showTitle ?  'active':' '}>動態控制</span></div>)

?

?7、注意事項

掌握JSX在實際應用時的注意事項

  1. JSX必須有一個根節點,如果沒有根節點,可以使用<></>(幽靈節點)替代
  2. 所有標簽必須形成閉合,成對閉合或者自閉合都可以
  3. JSX中的語法更加貼近JS語法,屬性名采用駝峰命名法 ?class -> className? ? ? ? ??for -> htmlFor
  4. JSX支持多行(換行),如果需要換行,需使用() 包裹,防止bug出現

?

//父節點示例

?

幽靈節點<></>?

?幽靈節點<></> 消失

?下一節做一個練習案例

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41707.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

因果推斷(四)斷點回歸(RD)

因果推斷&#xff08;四&#xff09;斷點回歸&#xff08;RD&#xff09; 在傳統的因果推斷方法中&#xff0c;有一種方法可以控制觀察到的混雜因素和未觀察到的混雜因素&#xff0c;這就是斷點回歸&#xff0c;因為它只需要觀察干預兩側的數據&#xff0c;是否存在明顯的斷點…

【C++入門到精通】C++入門 —— list (STL)

閱讀導航 前言一、list簡介1.概念2.特點 二、list的使用1.list的構造2.常見的操作?std::list類型的增、刪、查、改 三、list與vector的對比溫馨提示 前言 文章綁定了VS平臺下std::list的源碼&#xff0c;大家可以下載了解一下&#x1f60d; 前面我們講了C語言的基礎知識&…

C語言實例_獲取文件MD5值

一、MD5介紹 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一種常用的哈希函數算法。將任意長度的數據作為輸入&#xff0c;并生成一個唯一的、固定長度&#xff08;通常是128位&#xff09;的哈希值&#xff0c;稱為MD5值。MD5算法以其高度可靠性和廣泛應用而聞名…

全球磁強計市場價值約為16.2億美元,預測期內將以超過5.21%的增長率增長

磁強計是一種用于測量磁場強度和方向的儀器。它可以檢測和測量地球磁場、物體的磁性、地下礦藏、磁性材料等。磁強計在地球科學、物理學、地質學、勘探、礦業等領域具有廣泛的應用。 根據阿譜爾&#xff08;APO&#xff09;的統計及預測&#xff0c;2022年全球磁強計市場價值約…

跳跳!(c++題解)

題目描述 你是一只小跳蛙&#xff0c;你特別擅長在各種地方跳來跳去。 這一天&#xff0c;你和朋友小 F 一起出去玩耍的時候&#xff0c;遇到了一堆高矮不同的石頭&#xff0c;其中第 ii 塊的石頭高度為 hi?&#xff0c;地面的高度是 h0?0。你估計著&#xff0c;從第 ii 塊…

ts與vue

ts與Vue 如果你已經學習了typeScript,但不知道如何在vue項目中使用&#xff0c;那么這篇文章將會很適合你。參考千峰教育 kerwin視頻 1.會自動推導&#xff0c;隱士推導。提示 類型系統。 獨立模塊。 isolatedModules選項&#xff1a;是否配置為獨立的模塊。 減少報錯 let …

dispatcherServlet在tomcat啟動時如何被加載(1)

目錄 在springboot工程中, 如何添加一個servlet呢? 方法1 : 使用WebServlet注解 方法2 : 使用ServletRegistrationBean進行注冊 springmvc 采用的就是方式2和springboot集成的, 看一下源碼 springboot 字段裝配里面有這個類, 看一下源碼 90行, 創建了一個DispatcherServlet對象…

深入探究Socks5代理與IP代理在網絡安全與爬蟲中的應用

1. Socks5代理&#xff1a;打開網絡隧道的多功能工具 Socks5代理是一種流行的代理協議&#xff0c;它在傳輸層為數據包提供了隧道。相較于之前的版本&#xff0c;Socks5不僅支持TCP連接&#xff0c;還可以處理UDP流量&#xff0c;使其在需要實時數據傳輸的應用中表現出色。在網…

Zabbix配置通用的TCP/IP:port監控項

我們經常的用接口&#xff0c;比如說FTP、HTTP、DNS、數據庫接口&#xff0c;都可以用IP:PORT方式探測其是否存活&#xff0c;那么我們去繁就簡&#xff0c;就簡單監控一下IP&#xff1a;PORT吧&#xff01; 1、新建主機&#xff1a; 填入主機名稱、群組、Agent就是127.0.0.1…

解決Adobe Flash Player已被屏蔽

問題&#xff1a;該插件不支持 原因&#xff1a;現在瀏覽器默認禁用flash 博主當前使用的是谷歌瀏覽器Chrome 2個主要方法都已經失效 搜索一圈后&#xff0c;之前博客給出的2個主要方法都已經失效。 1、flash.cn 下載本地播放器 2、在chrome中打開flash的禁用開關 2023年解…

LangChain源碼逐行解密之系統(二)

LangChain源碼逐行解密之系統 20.2 serapi.py源碼逐行剖析 我們可以看一下Google查詢的例子,在LangChain中有多種實現的方式。 如圖20-5所示,在utilities的serpapi.py代碼文件中實現了SerpAPIWrapper。 圖20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目錄的se…

@pyrallis.wrap()

pyrallis.wrap import pyrallis pyrallis.wrap() 這個pyrallis.wrap()是什么 pyrallis.wrap() 是一個 Python 裝飾器&#xff08;Decorator&#xff09;&#xff0c;用于將函數或方法包裝在 Pyrallis 框架提供的性能分析器中。裝飾器是 Python 中的一種特殊語法&#xff0c;允許…

如何避免爬蟲IP被屏蔽

各位爬友們好&#xff0c;作為一名專業的爬蟲代理提供者&#xff0c;我要和大家分享一些避免爬蟲IP被屏蔽的實用技巧。你知道嗎&#xff0c;當我們爬取數據的時候&#xff0c;很容易被目標網站識別出來并封禁我們的IP地址&#xff0c;導致無法繼續爬取數據。這個問題困擾了很多…

7. 實現 API 自動生成

目錄 1. pom.xml中引用依賴 2. 引入相關的依賴 3. 編寫配置類 4. application.yml 中添加配置 5. API 常用注解 6. 訪問 API 列表 7. API 導入 Postman 使用 Springfox Swagger生成 API&#xff0c;并導入 Postman&#xff0c;完成API單元測試。 Swagger 簡介&#xff1a;Swag…

執行Lua腳本后一直查詢不到Redis中的數據(附帶問題詳細排查過程,一波三折)

文章目錄 執行Lua腳本后一直查詢不到Redis中的數據&#xff08;附帶詳細問題排查過程&#xff0c;一波三折&#xff09;問題背景問題1&#xff1a;Lua腳本無法切庫問題2&#xff1a;RedisTemlate切庫報錯問題3&#xff1a;序列化導致數據不一致問題4&#xff1a;Lua腳本中單引號…

Etcd備份及恢復

一、Etcd數據備份 1、備份命令 [rootlocalhost ~]# export ETCDCTL_API3 [rootlocalhost ~]# /data/etcd-3.4.9/bin/etcdctl --endpoints10.2.20.108:2379 snapshot save etcd-date "%Y-%m-%d_%H-%M-%S".snapshot 2、備份完成后會在當前目錄生成備份文件 [rootlo…

vue實現打印功能

在Vue應用中調用打印機功能&#xff0c;可以使用JavaScript的window.print()方法。這個方法會打開打印對話框&#xff0c;然后讓我們選擇打印設置并打印文檔&#xff0c;但是尼這種方法依賴于瀏覽器的打印功能。 以下是一個簡單的示例&#xff0c;演示如何在Vue組件中調用打印…

Linux Tracing Technologies

目錄 1. Linux Tracing Technologies 1. Linux Tracing Technologies Linux Tracing TechnologieseBPFXDPDPDK

Flask Web開發實戰(狼書)| 筆記第1、2章

前言 2023-8-11 以前對網站開發萌生了想法&#xff0c;又有些急于求成&#xff0c;在B站照著視頻敲了一個基于flask的博客系統。但對于程序的代碼難免有些囫圇吞棗&#xff0c;存在許多模糊或不太理解的地方&#xff0c;只會照葫蘆畫瓢。 而當自己想開發一個什么網站的時&…

ubuntu部署haproxy

HAProxy是可提供高可用性、負載均衡以及基于TCP和HTTP應用的代理. 1、更新系統報 通過在終端中運行以下命令&#xff0c;確保所有系統包都是最新的 sudo apt updatesudo apt upgrade2、安裝Haproxy sudo apt install haproxy設置開機自動啟動haproxy服務 sudo systemctl en…