国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

在React中實現(xiàn)條件渲染的5種方法及優(yōu)缺點

開發(fā) 前端
隨著現(xiàn)代Web應(yīng)用的重量從后端轉(zhuǎn)移到前端,我們不得不花更多的時間去考慮性能優(yōu)化。在實現(xiàn)條件渲染時也是如此。

 隨著現(xiàn)代Web應(yīng)用的重量從后端轉(zhuǎn)移到前端,我們不得不花更多的時間去考慮性能優(yōu)化。在實現(xiàn)條件渲染時也是如此。

所以,試著花適量的時間來優(yōu)化你的代碼,同時盡可能多地推動重用組件。這將幫助你在質(zhì)量和交付時間之間取得適當(dāng)?shù)钠胶狻?/p>

 

[[327628]]

 

1. if-else

我們可以將 if-else 條件邏輯應(yīng)用于React中的JSX。請記住,JSX在執(zhí)行之前已編譯為JS,因此我們實際上是在用JS代碼編寫。

/ Example /

 

  1. var globalVar = true 
  2. function App() { 
  3.   if(globalVar) { 
  4.     return <div>If Rendering</div> 
  5.   } else { 
  6.     return <div>Else Rendering</div> 
  7.   } 

 

/ 性能 /

if-else 語句可能會導(dǎo)致React中的渲染浪費。這在中小型應(yīng)用中可能感覺不到,但在有成百上千組件的大型應(yīng)用中,性能拖累會相當(dāng)明顯。

讓我們研究以下示例:

 

  1. render() { 
  2.   if(props.showA) { 
  3.     return ( 
  4.       <A /> 
  5.       <B /> 
  6.       <C /> 
  7.     ) 
  8.       } 
  9.   return ( 
  10.     <B /> 
  11.     <C /> 
  12.   ) 

根據(jù)條件加載組件A,B,C。

如果 showA prop為真,則渲染A,B,C。如果 showA prop 為假,則跳過A并僅渲染B和C。

這里的問題來自React的差異算法。這個算法是React用來知道何時避免浪費渲染的算法。

在初始 showA 為 true 時,組件將按照其結(jié)構(gòu)A-> B-> C進行渲染。只要 showA 為 true 且其props不變,React就不會重新渲染。

但是,當(dāng) showA 變?yōu)?false 時,呈現(xiàn)結(jié)構(gòu)將發(fā)生變化,結(jié)構(gòu)將為B->C。現(xiàn)在,React會看到一個與之前的結(jié)構(gòu)不同的結(jié)構(gòu),并且會重新渲染(un-mount 和 re-mount)B和C組件,即使它們的props/state保持不變,不需要重新渲染。這是一種浪費的重新渲染。

2.三元運算符

三元運算符是“if-else”條件的縮寫。第一部分說明條件,第二部分則為返回值(如果為true),最后一部分為返回值(如果為false)。

 

  1. condition ? true_cond : false_cond 

/ Example /

 

  1. let cond = true 
  2. function App() { 
  3.   return ( 
  4.     {cond ?  
  5.      <div>If Rendering</div> 
  6.      : 
  7.      <div>Else Rendering</div> 
  8.     } 
  9.   ) 

 

3.Element變量

Element變量包含JSX元素,因此可以在React組件中的任何地方使用。Element變量使你的代碼更易于閱讀和理解,因為它消除了組件中的多個return語句。

實施此操作的標準方法:

 

  1. function App(props) { 
  2.   if(props.loggedIn) { 
  3.     return <div>Logged In</div> 
  4.   } else { 
  5.     return <div>Not Logged In</div> 
  6.   } 

 

在上面的組件中,我們有多個return語句。我們在JSX中使用 if-else 來有條件地呈現(xiàn)部分UI。

我們可以使用Element變量來存儲要在條件語句的每個結(jié)果上返回的元素。

/ Example /

 

  1. function App(props) { 
  2.   let element 
  3.   if(props.loggedIn) { 
  4.     element = <div>Logged In</div> 
  5.   } else { 
  6.     element = <div>Not Logged In</div> 
  7.   } 
  8.   return element 

 

根據(jù) if-else 語句的求值,我們使用 element變量 保存要渲染的最后一個元素。

通過使用Element變量,我們使我們的代碼更簡潔易讀。

/ 性能 /

這里的問題與上面的 if-else 項中提到的問題相同。

4. AND運算符(&&)

AND運算符用于檢查其左右表達式均正確。

 

  1. left_expr && right_expr 

如果表達式解析為true,則AND運算符將返回正確表達式的求值。

Example:

 

  1. (true && "nnamdi"
  2. // "nnamdi" 
  3. (true && 1234) 
  4. // 1234 

另一方面,如果表達式解析為false,則AND運算符將返回false:

 

  1. (false && "nnamdi"
  2. // false 
  3. (false && 1234) 
  4. // false 

如果是這種情況,我們可以使用此AND運算符在React中有條件地呈現(xiàn)JSX。

/ Example /

 

  1. function App(props) { 
  2.   return ( 
  3.     <div> 
  4.     { 
  5.       props.loggedIn &&  
  6.       <h3>You're logged in as {props.data.username}</h3> 
  7.     } 
  8.     </div> 
  9.   ) 

 

我們在JSX中使用AND運算符。花括號使我們能夠在JSX中添加和評估JS表達式。

/ 性能 /

雖然它和前面兩種條件渲染的方式在本質(zhì)上沒有什么區(qū)別,但帶AND(&&)運算符的JSX表達式被認為是一個更好的選擇,因為它在有條件地返回和渲染元素的同時,強制返回相同的結(jié)構(gòu)。

5.返回null

我們可以將組件設(shè)置為返回 null 值而不是JSX表達式,以便對其進行評估,但不會渲染任何內(nèi)容。

當(dāng)組件返回null時,它將阻止React安裝該組件。

 

  1. function App(props) { 
  2.   if(props.noRender) 
  3.     return null 
  4.  
  5.   return ( 
  6.     <div>App Component</div> 
  7.   ) 

 

如果設(shè)置了noRender屬性,則此組件返回null。因此,如果我們不希望App組件渲染,則將設(shè)置noRender道具 。

請注意,無論如何,都會觸發(fā)組件返回null的生命周期方法。

/ 性能 /

如上所述,盡管返回 null 的組件將不會渲染任何內(nèi)容,但仍將對其進行評估。這意味著不必要的計算可能會在大型應(yīng)用程序中加起來相當(dāng)重要。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2022-05-24 14:37:49

React條件渲染

2020-02-18 13:25:38

React前端數(shù)據(jù)

2023-12-05 15:58:06

React開發(fā)

2020-02-18 10:16:42

React數(shù)據(jù)代碼

2020-05-28 13:33:30

React Hook前端開發(fā)

2010-08-31 14:49:57

CSS居中

2012-05-03 09:58:19

VLANVLAN劃分

2019-01-03 15:43:25

Linux內(nèi)存shell

2020-01-16 10:47:36

服務(wù)器Kubernetes微服務(wù)

2020-07-24 09:56:12

React開發(fā)數(shù)據(jù)

2021-03-21 22:23:38

云計算數(shù)據(jù)中心IT

2021-03-02 10:55:07

云計算自動化云應(yīng)用

2019-07-31 09:32:06

2021-03-11 14:23:17

云計算混合云工具

2010-08-26 11:27:35

CSS居中

2019-11-15 13:26:17

編程語言微軟C語言

2020-05-13 09:01:23

Web隱藏技術(shù)元素

2019-10-22 10:48:48

Redis集群架構(gòu)

2023-05-24 16:41:41

React前端

2023-06-01 16:45:11

React開發(fā)JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號

日本不卡免费高清视频| 久久久999免费视频| 免费看日产一区二区三区| 同产精品九九九| 精品久久久久av| 国产河南妇女毛片精品久久久| 久久精品日产第一区二区三区乱码 | 最新日韩在线视频| 欧美牲交a欧美牲交| 国产高清精品久久久久| 亚洲高清在线观看一区| 99精品国产福利在线观看免费 | 国产免费一区| 欧美激情偷拍自拍| 日本久久91av| 精品在线观看入口| 久久久亚洲精选| 4438全国亚洲精品观看视频| 色综合影院在线| 亚洲美女炮图| 国产一区二区三区在线免费观看| gay欧美网站| 色青青草原桃花久久综合| 欧美色999| 欧美另类69精品久久久久9999| 久久视频社区| 91国语精品自产拍在线观看性色 | www亚洲欧美| 色婷婷成人网| 久久久久久久久久久人体 | 欧美精品一级| 国产精品一区二区三区四区五区| 亚洲成人中文| 欧美日韩喷水| 日韩高清一级片| 韩国无码av片在线观看网站| 国产风韵犹存在线视精品| 欧美日韩在线中文| 亚洲精品亚洲人成人网| 国产永久免费高清在线观看| 日韩欧美综合一区| 精品自拍视频| 国产精品日韩欧美大师| 男女羞羞视频教学| 欧美一区二区播放| 色久视频在线播放| 亚洲一级在线| xxxxxx在线观看| 91麻豆免费看| 满满都是荷尔蒙韩剧在线观看| 欧美自拍偷拍午夜视频| 久cao在线| 丝袜情趣国产精品| 亚洲精品小区久久久久久| 亚洲自拍偷拍视频| 久久狠狠亚洲综合| 成人福利资源| 亚洲精品一区二区三区香蕉| 亚洲一区二区免费在线观看| 91视频88av| 寂寞少妇一区二区三区| а√最新版在线天堂| 欧美日韩不卡一区二区| 粉嫩一区二区三区在线观看| 97se亚洲综合| 成人免费高清在线观看| 一区二区三区高清在线视频| 精品女同一区二区| 农村少妇一区二区三区四区五区 | 亚洲视频综合在线| 日本高清视频在线播放| 久久久国产成人精品| 午夜久久美女| 国产福利一区视频| 日韩视频一区在线观看| 风间由美一区二区av101| 欧美黑人xxxxx| 亚洲欧洲av色图| 免费电影日韩网站| 国产精品久久久久久久久久久久冷 | 免费人成在线观看播放视频 | 亚洲综合久久久| 中文字幕高清在线播放| 国产精品福利小视频| 久久精品国产**网站演员| 少妇**av毛片在线看| 日韩第一页在线| 欧美国产美女| 国产精品69页| 精品久久五月天| 亚洲精彩视频| 欧美精品性生活| 精品亚洲一区二区三区四区五区| 亚洲国产一区二区在线观看| 孩娇小videos精品| 一区二区三区在线播放欧美| 亚洲人成免费| 天海翼一区二区三区免费| 九九热这里只有精品免费看| 久久狠狠亚洲综合| 国产福利小视频在线| 日韩免费在线播放| 国产欧美一区二区精品性| 日韩精品一区二区三区| 欧美三级网色| 欧美日韩一区二区在线观看视频| 久久av超碰| 色偷偷亚洲女人天堂观看欧| 久久久精品国产一区二区| 麻豆高清免费国产一区| 欧美猛烈性xbxbxbxb| 亚洲va码欧洲m码| 一区二区三区高清在线| 亚洲大奶少妇| 最近免费中文字幕中文高清百度| 中文字幕国内精品| 国产91综合网| 123成人网| 成人在线免费观看av| 国产一区二区三区视频在线观看 | 国产欧美中文在线| 日本老师69xxx| 成人免费观看网站| 日韩欧美在线国产| 欧美欧美黄在线二区| 1024欧美极品| 久久久久久尹人网香蕉| 欧美国产欧美综合| 乱亲女h秽乱长久久久| 成人免费观看在线网址| 欧美日韩国产123| 中文字幕精品综合| 日韩精品福利一区二区三区| 热99在线观看| 国产精品99久久99久久久二8| 亚洲日本电影在线| 欧美伦理影院| 伦理片一区二区三区| 国产精品对白一区二区三区| 91国内精品野花午夜精品 | 精品一二线国产| 天堂av中文在线观看| 国产四区在线观看| 一本一道久久a久久精品逆3p| 大胆亚洲人体视频| 91九色成人| 国产经典av| 91影视免费在线观看| 欧美日韩精品一区视频| 三级在线观看一区二区| 中文在线а√天堂| 国产免费毛卡片| 97视频免费看| 懂色av一区二区三区| 亚洲九九精品| 色是在线视频| av五月天在线| 成人免费网站在线观看| 欧美日韩亚州综合| 黄色日韩网站视频| 日韩成人视屏| 成人频在线观看| 久久草视频在线看| 亚洲欧洲在线播放| 欧美激情一区三区| 91精品国产自产拍在线观看蜜| av在线之家电影网站| 在线视频一区观看| 欧美精品在线观看91| 亚洲一区二三区| 亚洲欧美日韩国产一区二区| 日韩高清不卡| 狠狠操在线视频| 日韩高清av| 欧美丰满少妇xxxxx| 日韩欧美高清视频| 美国一区二区三区在线播放 | 91高清视频免费看| 久久人人97超碰国产公开结果| av资源在线播放| 成年人视频观看| 国产精品国产福利国产秒拍| 51久久夜色精品国产麻豆| jlzzjlzz国产精品久久| 91精品综合久久久久久久久久久 | 青青成人在线| 久久偷看各类女兵18女厕嘘嘘| 午夜影视日本亚洲欧洲精品| 久久国产精品第一页| 亚洲视频分类| 91黄页在线观看| 91se在线观看| 韩国成人精品a∨在线观看| www.欧美日韩| 亚洲午夜久久久久久久久电影网| 国产手机视频精品| 亚洲综合色视频在线观看| 日韩国产在线一区| 欧美亚洲午夜视频在线观看| 日韩免费视频一区|