Vue 3 中的 `h` 函數詳解

h 函數是 Vue 3 中用于創建**虛擬 DOM 節點(VNode)**的核心函數,它是 Vue 渲染系統的基石。下面我將全面解釋它的作用、用法和重要性。

1. h 函數的基本概念

hcreateVNode 的簡稱,來源于"hyperscript"的縮寫傳統。它的主要作用是:

  • 創建虛擬 DOM 節點(VNode)
  • 描述 UI 應該呈現的樣子
  • 作為模板編譯的底層實現

2. h 函數的三種使用方式

基本用法

import { h } from 'vue'// 創建一個div元素
const vnode = h('div', 'Hello World')

完整簽名

h(type, props, children)
  • type: 可以是HTML標簽名、組件或異步組件
  • props: 包含屬性、prop、事件等的對象
  • children: 子節點,可以是字符串、數組或其他VNode

3. h 函數的具體應用

創建原生元素

h('div', { class: 'container' }, [h('h1', '標題'),h('p', '內容')
])

創建組件

import MyComponent from './MyComponent.vue'h(MyComponent, {propA: 'value'
})

帶事件的元素

h('button', {onClick: () => console.log('點擊了')
}, '點擊我')

4. h 函數與模板的關系

模板最終會被編譯成使用 h 函數的渲染函數。例如:

<template><div class="container">{{ message }}</div>
</template>

編譯后相當于:

render() {return h('div', { class: 'container' }, this.message)
}

5. 為什么需要 h 函數?

  1. 性能優化:虛擬DOM可以高效地比較和更新實際DOM
  2. 靈活性:可以動態創建任意復雜的UI結構
  3. 跨平臺:不直接依賴瀏覽器DOM,可以渲染到不同環境
  4. 組合性:可以作為JavaScript值傳遞和組合

6. 實際開發中的使用場景

  1. 渲染函數:在 setup() 中返回渲染函數時
  2. 函數式組件:創建無狀態組件
  3. 高階組件:包裝或修改現有組件
  4. JSX:JSX會被Babel轉換為 h 函數調用

7. 與 Vue 2 的區別

在 Vue 2 中,h 函數是作為渲染函數的參數傳入:

// Vue 2
render(h) {return h('div')
}

而在 Vue 3 中,需要從 vue 中顯式導入:

// Vue 3
import { h } from 'vue'setup() {return () => h('div')
}

h 函數是 Vue 3 響應式和渲染系統的關鍵部分,理解它有助于更深入地掌握 Vue 的工作原理和高級用法。

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

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

相關文章

SoapCore 全面介紹:在 .NET Core 中實現 SOAP 服務的現代解決方案

一、什么是 SoapCore&#xff1f; 在現代微服務和 REST API 成為主流的今天&#xff0c;SOAP&#xff08;Simple Object Access Protocol&#xff09;看似已經被邊緣化&#xff0c;但在許多企業和政務系統中&#xff0c;SOAP 仍然是 重要的通信協議。特別是在金融、保險、醫療…

JDBC工具類和SQL 注入問題

在軟件開發中&#xff0c;數據庫安全與高效訪問一直是關鍵課題。本文將圍繞 SQL 注入問題的原理、解決方案&#xff0c;以及 JDBC 開發中的工具類演進和連接池技術展開探討&#xff0c;結合實際代碼示例&#xff0c;為開發者提供清晰的技術實踐指南。 SQL 注入問題的核心原理與…

2022年SEVC SCI2區,分數階蟻群算法FACA:一種基于分數階長期記憶的合作學習方法,深度解析+性能實測

目錄 1.摘要2.分數階微積分基礎知識3.分數階蟻群算法FACA4.分數階蟻群算法FACA數學證明與分析5.結果展示6.參考文獻7.代碼獲取8.算法輔導應用定制讀者交流 1.摘要 本文提出了一種新穎分數階蟻群算法&#xff08;Fractional-Order Ant Colony Algorithm&#xff0c; FACA&#…

java+vue+SpringBoo數字科技風險報告管理系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.…

YOLOv12_ultralytics-8.3.145_2025_5_27部分代碼閱讀筆記-augment.py

augment.py ultralytics\data\augment.py 目錄 augment.py 1.所需的庫和模塊 2.class BaseTransform: 3.class Compose: 4.class BaseMixTransform: 5.class CutMix(BaseMixTransform): 6.class CopyPaste(BaseMixTransform): 7.def v8_transforms(dataset, img…

跨芯片 AI 算子庫 FlagGems 正式加入PyTorch 基金會生態項目體系

2025年北京智源大會 PyTorch Day China 論壇上&#xff0c;PyTorch 基金會執行董事 Matt White 宣布高性能通用 AI 算子庫 FlagGems 項目獲得批準&#xff0c;正式加入 PyTorch 生態項目體系。Pytorch基金會于6月26日在推特上進行了官方宣布。 作為唯一支持多種AI芯片架構的算…

vue + vue-router寫登陸驗證的同步方法和異步方法,及頁面組件的分離和后端代碼

先寫一個用vue cdn寫一個登陸驗證的小示例后端代碼 前端719.html <div id"app"><div id"loginForm">//路由層&#xff0c;登陸頁和后臺主頁<router-link to"/">Login</router-link><router-link to"/home&quo…

.netcore 一個mvc到靜態html實現

一、新建Mvc項目 Program.cs添加攔截 二、添加一個集成測試 將頁面轉為html到wwwroot下面 UnitGenHtml.cs using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.VisualStudio.TestPlatform.TestHost;namespace SaaS.OfficialWeb…

實現Taro小程序+nut-ui左滑刪除效果

Taro小程序開發中&#xff0c;使用nut-ui組件&#xff0c;實現左滑刪除卡片效果&#xff08;自定義刪除按鈕樣式&#xff09; html代碼部分 <nut-swipe class"carBox" v-for"(item, index) in carList" :key"item" :ref"(el) > se…

LLM 系列(五):模型訓練篇

一個面向 Java 開發者的 Sring-Ai 示例工程項目&#xff0c;該項目是一個 Spring AI 快速入門的樣例工程項目&#xff0c;旨在通過一些小的案例展示 Spring AI 框架的核心功能和使用方法。 項目采用模塊化設計&#xff0c;每個模塊都專注于特定的功能領域&#xff0c;便于學習和…

Oracle LogMiner分析日志的三種方法示例

Oracle LogMiner分析日志的三種方法示例 方法一:Online Catalog作為日志挖掘字典自動獲取日志模式手動獲取日志模式方法二:Redo Log作為日志挖掘字典自動獲取日志模式手動獲取日志模式方法三:Flat File作為日志挖掘字典自動獲取日志模式手動獲取日志模式?? Oracle LogMine…

Java 中 List.stream() 的全面使用指南(含完整示例)

標簽&#xff1a;Java8, Stream API, 函數式編程, 集合操作 一、前言 隨著 Java 8 的推出&#xff0c;Stream API 成為了處理集合數據的一種高效方式。List.stream() 是 Java Stream API 的入口方法之一&#xff0c;它允許開發者將集合轉換為流&#xff0c;并通過鏈式調用實現…

香港 8C 站群服務器買來可以做哪些業務?

香港8C站群服務器&#xff08;即提供8個不同C段IP地址的服務器&#xff09;憑借多IP獨立分配、低延遲網絡及免備案優勢&#xff0c;適用于以下關鍵業務場景&#xff1a; 一、SEO優化與搜索引擎運營 SEO站群搭建&#xff1a;為 80-100 個網站分配 8 個不同 C 段 IP &#xff0…

UI前端與數字孿生融合新趨勢:智慧醫療的可視化診斷輔助

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 一、引言&#xff1a;數字孿生重塑智慧醫療診斷范式 在醫療數字化轉型的浪潮中&#xff0c;數…

OpenBayes 一周速覽丨Nanonets-OCR-s深度語義理解,精準結構化轉換;HLE人類問題推理基準上線,含2.5k題目,助力封閉式評估體系構建

公共資源速遞 5 個公共數據集&#xff1a; * Brain Tumor 腦腫瘤數據集 * HLE 人類問題推理基準數據集 * OpenThoughts3-1.2M 推理數據集 * Nemotron-Personas 人物角色數據集 * OpenMathReasoning 數學推理數據集 14 個公共教程&#xff1a; 音頻生成 * 2 視頻生成 *…

ABB CH-3185 3 bhl 000986 p 1006 ab ability 800 xa自動化系統

安全性總結(續) 操作環境 在AC 800M控制器系統上線之前&#xff0c;調查哪些環境條件適用。請特別注意以下幾點: 控制器不得暴露在超過相關技術規范中給定值的條件下。 控制器不得在暴露于強電氣干擾的環境中使用。電機可能產生超過設備允許水平的干擾&#xff0c;例如在維…

【算法】動態規劃 斐波那契類型:1137. 第 N 個泰波那契數

1137. 第 N 個泰波那契數 簡單 相關標簽 premium lock icon 相關企業 提示 泰波那契序列 Tn 定義如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的條件下 Tn3 Tn Tn1 Tn2 給你整數 n&#xff0c;請返回第 n 個泰波那契數 Tn 的值。 示例 1&#xff1a; 輸入&am…

圖像編輯新變革 !ComfyUI-Kontext-fp8本地部署教程,120B參數對標閉源巨頭

一、介紹 ComfyUI 是一個強大的、模塊化的 Stable Diffusion 界面與后端項目。該用戶界面將允許用戶使用基于圖形/節點/流程圖的界面設計和執行高級穩定的擴散管道。 關于 FLUX.1 Kontext Dev FLUX.1 Kontext 是 Black Forest Labs 最新推出的突破性多模態圖像編輯模型&#…

軟件安裝——下載安裝ollama

一、下載&#xff08;模型管理工具&#xff09;&#xff1a; 下載地址&#xff1a;Ollama 二、自定義安裝&#xff1a; 1.令行安裝方式如下&#xff1a; 在OllamaSetup.exe所在目錄打開cmd命令行&#xff0c;然后命令如下&#xff1a; OllamaSetup.exe /DIRE:\AllEdit\Ai…

springboot集成mqtt收發消息

在 Spring Boot 中使用 MQTT 可以通過集成 Eclipse Paho 或 HiveMQ 等客戶端庫實現。以下是完整的整合步驟&#xff0c;包括配置、發布和訂閱消息的示例。 1. 添加 MQTT 依賴 在 pom.xml 中添加 Paho MQTT 客戶端依賴&#xff1a; <dependency><groupId>org.spri…