React-JSX中如何實作Class與Style的動態綁定(附實例)
這篇文章帶給大家的內容是關於React-JSX中如何實現Class與Style的動態綁定(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
摘要:操作元素的class 清單和內聯樣式是資料綁定的一個常見需求,頻繁操作dom元素會降低javascript效能,為了實現高效能js,動態綁定class和style是高素養程式設計師的必選。本文以React-JSX語法為基礎,結合其它框架的實作方法,介紹如何實作ClassName 與 Style 的動態綁定。
註:本文實例都已經過驗證,錯誤的請廣大道友批評指正
綁定HTML Class
物件語法
我們可以傳給className 一個對象,以動態地切換class:
註:使用類似vue、小程式等物件語法是不支援的
錯誤範例:
render(){ return <p className={ 'box-color':this.state.isError }>hello world</p> }
可以實現的語法如下:
1、使用邏輯運算子
css檔案
.box-color { color:red; }
js檔案
render(){ return <p className={ this.state.isError && 'box-color' }>hello world</p> }
2、使用三元運算子
#css檔案
.box-show { display: block; } .box-hide { display: none; }
render(){ return <p className={ this.state.isShow ? 'box-show' : 'box-hide' }>hello world</p> }
3、使用函數
綁定的資料物件也不必內聯定義在模板裡:可以定義一個函數,類似vue中的computed鉤子函數
js檔案
getIsError() { return this.state.isError ? 'box-color' : ''; } render(){ return <p className={ this.getIsError() }>hello world</p> }
註:下面這種物件變數寫法是不支援的,也不會報錯,控制台className顯示為[object object],無效。
const classObj = { 'box-show': this.state.isShow, 'box-color': this.state.isError } render(){ return <p className={ classObj }>hello world</p> }
一般在專案邏輯比較複雜的場景中使用函數綁定方法,使用過多會使得視圖層和邏輯層交雜混亂,難以閱讀和維護,建議使用邏輯運算子和三元運算符方法動態綁定Class。
陣列語法
React-JSX語法不支援className陣列語法,嘗試範例:
css檔案
.box-hide { display: none; } .box-color { color:red; }
js檔案
this.state = {isShow: false} render(){ return <p className={ this.state.isShow ? 'box-color' : [ 'box-color', 'box-hide'] }>hello world</p> }
控制台顯示結果(無效,中間多了個逗號):
<p class="box-color, box-hide">hello world</p>
註:既然不支援陣列語法,你只能將「box-color」中的樣式重複使用到「box-hide 」中,使用三元運算子來表示,這樣無形中增加了css代碼量。
綁定內聯樣式
物件語法
style物件語法比clasName物件更直觀,處理的功能更簡單,邏輯運算子方法和函數綁定方法可以參考className的實現,以下只介紹三元運算子的使用:
三元運算子
類似Vue的vue-if、微信小程式的wx-if指令,可以用style三元運算子動態實作
js檔案
render(){ return <p style={ this.state.isShow ? {display: 'inline-block'} : { display: 'none'} }>hello world</p> }
陣列語法
#React-JSX語法也不支援style陣列語法,嘗試範例:
# js檔案
render(){ return <p style={ this.state.isShow ? {color: 'red'} : [{color: 'red'}, {display: 'inline-block'}] }></p> }
控制台顯示結果(無效):
<p></p>
總之,為了高品質的完成專案需求,應付越來越複雜的業務場景,那種大量操作dom元素,隨意命名一個樣式變量,然後綁定到class和style的做法是不提倡的。
相關文章推薦:
以上是React-JSX中如何實作Class與Style的動態綁定(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了HTML&lt; Progress&gt;元素,其目的,樣式和與&lt; meter&gt;元素。主要重點是使用&lt; progress&gt;為了完成任務和LT;儀表&gt;對於stati

本文討論了html&lt; datalist&gt;元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

本文討論了HTML&lt; meter&gt;元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了&lt; meter&gt;從&lt; progress&gt;和前

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

本文討論了視口元標籤,這對於移動設備上的響應式Web設計至關重要。它解釋瞭如何正確使用確保最佳的內容縮放和用戶交互,而濫用可能會導致設計和可訪問性問題。

本文討論了&lt; iframe&gt;將外部內容嵌入網頁,其常見用途,安全風險以及諸如對象標籤和API等替代方案的目的。

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...
