搜尋
首頁web前端js教程建立React Element的方法介紹(詳細流程)

這篇文章帶給大家的內容是關於創建React Element的方法介紹(詳細過程),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

上一章節中,我們使用create-react-app 工具建立了一個基於react 的開發環境,那麼從這一章起,我們就正式開始react 框架的學習。

打開my-app 項目,找到src/index.js 文件,我們在上一章中提到過,這個文件是整個應用的入口,當頁面刷新時,會主動去加載這個文件,那這裡我們直接刪掉這個目錄下的其他文件,只保存index.js 即可。然後刪除這個檔案中的預設程式碼,並呼叫console.log("in")方法在控制台上進行輸出。

使用 yarn start 指令啟動項目,開啟瀏覽器開發者工具,可以看到控制台成功列印。在使用鷹架工具搭建的開發環境中,已經實現了熱加載的功能,也就是說,當我們完成js 程式碼的修改之後,不在需要頻繁的透過刷新來查看頁面的效果,在每次修改保存之後,瀏覽器會自動的完成頁面的刷新。例如這裡,我把這裡輸出的字串稍稍改一下,然後儲存,可以看到控制台已經將剛剛修改的字串輸出了。

React Element

好,回到react 框架的知識點上,我們知道,一個頁面是由很多的節點元素組合在一起的,比方說,h1 元素,p 元素, ul 元素等等。那實際上,在 react 中,最小的組成單元也是元素,只是我們將它稱為 react element。那麼,我們要如何創建一個 react element 呢?

比方說,這裡我需要在頁面中顯示一個 h1 的元素,裡面是一個 Hello World 字串,那首先我就需要創建這樣的一個 react element。

react 框架中,有兩個核心物件 React 和 ReactDOM。這裡就可以透過 React 物件來建立一個 h1 元素,先引入這個物件。

import React from "react";

然後呼叫 createElement 方法來建立元素。這個方法的第一個參數是我們需要建立的節點類型,這裡我需要建立一個h1 元素,那參數就是h1,第二個參數是這個元素擁有的屬性設置,沒有屬性的時候可以直接給null 的值,第三個參數就是該元素的子元素,這裡我們需要在h1 元素下顯示Hello World,那我們就可以把這個字串當成它的子元素傳遞進去。這個方法的回傳值就是一個 react element。我們可以在控制台上列印這個物件。

const h1Ele = React.createElement("h1", null, "Hello World");
console.log(h1Ele)

從控制台上我們可以看到,它就是一個普通的 javascript 對象,這個物件擁有一些屬性,用來描述真實的元素。比方說: 這裡的type 屬性就是用來描述這個元素的類型,也就是說這個物件映射的是一個h1 元素,同理,這裡的props.children 指的就是這個元素下面的子元素,也就是的Hello World 字串。

建立React Element的方法介紹(詳細流程)

現在,我們完成了react element 的創建,下一步就需要將這個元素變成真正的DOM 節點加入到我們的頁面中去。這時,就需要使用 ReactDOM 物件來完成真實節點的渲染。首先引入這個物件。

import ReactDOM from "react-dom"

在 ReactDOM 物件上,有一個 render 方法,就是專門用來將 react element 渲染成真實 DOM 的。這個方法接收 2 個參數。第一個參數是我們需要渲染的 react element,這裡我們就直接使用剛剛建立的那個 h1 元素;第二個參數是需要將這些元素顯示到頁面的哪個地方。開啟 index.html 頁面,我們可以發現,在這個頁面中有一個空白的 p 元素,這個元素我們稱之為叫容器,專門用來存放由 react 產生的這些元素的。那這裡,我們就可以把這個元素當成 render 方法的第二個參數。儲存之後,查看頁面,我們就可以看到在頁面上顯示了一個 Hello World。

ReactDOM.render(h1Ele, document.querySelector("#root"))

下一步,我們要如何為這個節點增加樣式呢?回到剛剛創建節點的那個方法,實際上,我們可以在這個方法的第二個參數中,來設定這個節點的樣式,比方說,我現在需要讓這個h1 的字體顏色變成紅色,那麼直接指定style color: red 就好了。

const h1Ele = React.createElement("h1", {
  style: {
    color: "red"
  }
}, "Hello World");

除了使用 style 屬性以外,我們依然可以透過引入外部樣式表來修飾。這裡我新建一個 css 文件,新增一個 class 選擇器,設定字體大小為 50px,然後在 index.js 中,我們使用 import 引入這個 css 檔案:

// theme.css
.msg {
  font-size: 50px;
}

// index.js
import "./theme.css"

然后在创建这个元素的时候,指定这个元素的 className 为 msg 就可以了,这时我们可以看到这个样式表就应用到当前这个元素了。

const h1Ele = React.createElement("h1", {
  style: {
    color: "red"
  },
  className: "msg"
}, "Hello World");

多个子元素的传递方式

接下来,我想再渲染一个列表应该如何操作呢?比方说,在这个列表中要显示 3 个选项,分别是 HTML,CSS 和 JAVASCRIPT。那我们第一步应该要创建这些节点。

首先引入 React 对象,使用 createElement 方法创建第一个 li 元素,第一个显示 HTML,然后再创建两个相同的元素,分别显示 CSS 和 JAVASCRIPT。

const li_01 = React.createElement("li", null, "HTML")
const li_02 = React.createElement("li", null, "CSS")
const li_03 = React.createElement("li", null, "JAVASCRIPT")

子元素创建完成之后,我们再来创建一个 ul 元素,因为这个ul元素有多个子元素,因此,这里有两种方式可以来传递子元素,第一种,我们可以把每一个子元素都当成参数传递给 createElement 方法

const ulEle = React.createElement("ul", null, li_01, li_02, li_03)

完成之后,将 ulEle 元素通过 render 方法渲染出来。查看页面,可以看到列表已经成功显示。

第二种方法,我们还可以将这些子元素变成一个数组交给 createElement 方法完成渲染,查看页面,我们可以看到列表依然正常显示,但是控制台给咱们抛出了一个警告:

建立React Element的方法介紹(詳細流程)

这个警告的原因是,如果我们通过数组迭代的方式来创建子元素的话,我们需要给每一个子元素添加一个key的属性,而且这个属性的值,在同级元素中必须是唯一且不变的。那这里,我们给每一个li元素都增加一个key,值得话,让他们保证唯一就可以了。再查看页面,这时警告就消失了。

const li_01 = React.createElement("li", { key: 0 }, "HTML")
const li_02 = React.createElement("li", { key: 1 }, "CSS")
const li_03 = React.createElement("li", { key: 2 }, "JAVASCRIPT")

当然,这里我们还可以定义一个数组,然后通过迭代数组来产生这些li元素,这样可以简化一下我们的代码:

const arr = ["HTML", "CSS", "JAVASCRIPT"]
const liEles = arr.map((item, index) => {
  return React.createElement("li", {
    key: index
  }, item)
})
const ulEle = React.createElement("ul", null, liEles)

以上是建立React Element的方法介紹(詳細流程)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

神秘的JavaScript:它的作用以及為什麼重要神秘的JavaScript:它的作用以及為什麼重要Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。