react的使用: React如何渲染UI
這篇文章跟大家介紹的內容是關於react的使用: React如何渲染UI,有著一定的參考價值,有需要的朋友可以參考一下。
01. React 渲染介面的方式
在 React 等大型前端框架出現之前,我們渲染 UI 元素的方式是使用字串模板。而在 React 中,我們透過使用JavaScript 物件來渲染 UI 元素。
在上一章我們提到過,React 為了節省頻繁操作DOM 所耗費的前端性能,提出了虛擬DOM的概念,在這裡我們所創建的JavaScript 物件即是用來描述「頁面看起來是什麼樣子」的虛擬DOM節點。 「虛擬DOM」是如何最終轉化為「真實DOM「並展現在瀏覽器中的呢?這裡面的複雜工作(操作 DOM 樹,新增節點)由 React 完成。
讓我們先看看如何透過一個JavaScript 物件建立一個虛擬的DOM節點(即React 元素):
// 为了创建一个 React 元素,我们需要使用 React.createElement API const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, world!' );
該API 最終會傳回一個大致如下格式的JavaScript 物件:
const element = { type: 'h1', props: { className: 'greeting', children: 'Hello, world' } };
React 會為這個JavaScript 物件在產生的虛擬DOM樹上找到一席之地,並最終和瀏覽器中的真實DOM 樹合併,渲染視圖。
然而在實際開發中,你幾乎不會使用到React.createElement
API,而是像下方這樣創建React 元素:
const element = ( <h1 className="greeting"> Hello, world! </h1> );
這種創建方式是透過一種叫做JSX
的JavaScript 語法擴充來實現的,而對於JSX
的概念在這裡我就不再進一步闡述了,你大可以將它理解為一種簡潔,高效創造React 元素的語法糖,用來更優雅的建構整個應用的虛擬DOM。
值得一提的是,JSX
並不是React 框架的一部分(這源自於React 程式碼組織上盡量分而治之的哲學),因此React 並不像負責合併虛擬DOM與真實DOM那樣,負責將由JSX 語法寫成的程式碼轉換為使用了React.createElement
API 的JavaScript 物件。
那誰來做這件事呢?答案是 Babel
。而通常,我們使用 webpack
來打包我們的 JavaScript程式碼並傳送至 Babel
進行轉譯。現在你明白了,為什麼 React
,webpack
和Babel
#總是像連體嬰兒一樣出現在一起。
到目前為止,我們已經知道如何創建React 元素了,但實際上我們只是「創建「而已,離元素被真正展現在瀏覽器上,還查了關鍵的一步”渲染“。
在這裡我們加快腳步,想要將之前創建好的React 元素渲染出來,我們需要使用以下程式碼:
<p id="root"></p> const element = <h1>Hello, world</h1>; // 使用 ReactDOM.render API ReactDOM.render( element, document.getElementById('root') );
沒錯,id 為root
的DOM元素將會成為整個虛擬DOM樹的根節點。至此,我們已經掌握了把 React 元素轉換為虛擬DOM節點,再在瀏覽器上渲染出該元素的整個流程。然而,只是能夠使用 React 渲染視覺元素還遠遠談不上發揮了 React 的價值。別忘了React 是作為大型前端框架存在的(雖然相較於其他大型前端框架,它的組件並不完備),React 的真正價值在於:使用React 元素簡潔,高效的實現各種複雜的業務邏輯。
如何做到這一點呢?答案是使用React 元件。
02. React 元件
React 元件不僅可以使我們有能力打包一堆視覺元素而且還可以使我們有能力打包一系列相對應的互動行為。可以說:React 元件是構成 React 應用的基石。
那什麼是 React 元件呢?你可以想像 React 元件就像是工廠,它接收一些列被稱為屬性的物料,最終生產(返回)React 元素/元件。
讓我們換個角度說,React 元件本質上就是一個 JavaScript 函數,它接收一系列參數,回傳 React 元素/元件。讓我們看看它是如何書寫的:
import React form 'react' import ReactDOM form 'react-dom' function Button(props) { return <button>{props.buttonName}</button> }
看到了嗎,React 元件完全符合之前我們提到的元件化思想,接收參數,回傳UI元素。
以組件化的角度思考建構 React 應用是一個非常棒的想法,因為元件化就意味著模組化與可重用性。組件類別就像是工廠生產組件的實例,這些組件類別完全符合”單一響應原則“與”DOT“原則。
在 React 的官方文件中,大量的 React API 是關於元件的。因此元件是 React 非常重要的一個概念,從本質上說,元件是 React 給予我們的主要的封裝單元。透過一個個組件,我們能像搭積木一樣快速搭起一個擁有複雜互動邏輯和視覺介面的大型應用,而應用中的每個視覺單元又擁有非常清晰的責任。
希望到這裡你能體會到React 在構建大型應用時的價值了,它使我們能夠專注於應用中的一小部分,而不會無意中影響到應用的其餘部分(即每個組件都符合了」高內聚,低耦合「的原則)。使用 React,我們更容易寫出清晰,優雅的程式碼。
03. 小結
最後,讓我們再次總結在React 中使用元件渲染介面的兩點優勢:
##易於重複使用:我們可以在任何時間地點呼叫一個元件;
方便自訂:透過給予元件不同屬性,我們可以得到不同的UI 元素;
##響應式React Native Echarts元件的介紹
以上是react的使用: React如何渲染UI的詳細內容。更多資訊請關注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)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
