詳細解釋 Vue 中的 h 函數和 render 函數:

Vue中的h函數和render函數是Vue中非常重要的函數,對Vue有著不可以或缺的作用,接下來讓我們了解一下!

// 1. h 函數的基本使用
/*** h 函數是 createVNode 的別名,用于創建虛擬 DOM 節點(VNode)* h 函數參數:* - type: 標簽名/組件* - props: 屬性對象(可選)* - children: 子節點(可選)*/// 1.1 創建簡單元素
const vnode = h('div', { class: 'test' }, 'Hello')// 1.2 創建帶子元素的節點
const vnode2 = h('div', { class: 'parent' }, [h('span', null, 'Child 1'),h('span', null, 'Child 2')
])// 1.3 創建組件
const MyComponent = {props: ['title'],setup(props) {return () => h('h1', null, props.title)}
}const vnode3 = h(MyComponent, {title: 'Hello',onClick: () => console.log('clicked')
})// 2. render 函數的使用
/*** render 函數用于將虛擬 DOM 渲染為真實 DOM* 參數:* - vnode: 要渲染的虛擬節點* - container: 容器元素*/// 2.1 基本用法
import { h, render } from 'vue'const vnode = h('div', { class: 'test' }, 'Hello')
render(vnode, document.body)// 2.2 動態渲染
function updateUI(text) {const newVNode = h('div', null, text)render(newVNode, document.body)
}// 2.3 清除渲染
render(null, document.body)  // 清除容器內容// 3. 實際應用示例// 3.1 創建消息提示組件
const createMessage = (type, content) => {// 創建容器const container = document.createElement('div')document.body.appendChild(container)// 創建消息組件的 VNodeconst vnode = h('div', {class: `message message-${type}`,style: {position: 'fixed',top: '20px',left: '50%',transform: 'translateX(-50%)'}}, [// 圖標h('i', { class: `icon-${type}` }),// 文本內容h('span', null, content)])// 渲染到容器render(vnode, container)// 定時清除setTimeout(() => {render(null, container)container.remove()}, 3000)
}// 3.2 創建彈窗組件
const createModal = (options) => {const container = document.createElement('div')document.body.appendChild(container)const close = () => {render(null, container)container.remove()}const vnode = h('div', {class: 'modal-wrapper',onClick: (e) => {if (e.target === e.currentTarget) close()}}, [h('div', { class: 'modal' }, [// 標題h('h2', null, options.title),// 內容h('div', { class: 'content' }, options.content),// 按鈕h('div', { class: 'footer' }, [h('button', {onClick: () => {options.onConfirm?.()close()}}, '確定'),h('button', {onClick: close}, '取消')])])])render(vnode, container)return {close}
}// 4. 高級用法// 4.1 條件渲染
const conditionalRender = (condition) => {return h('div', null, [condition ? h('p', null, '條件為真'): h('p', null, '條件為假')])
}// 4.2 列表渲染
const listRender = (items) => {return h('ul', null, items.map(item => h('li', { key: item.id }, item.text)))
}// 4.3 插槽的使用
const withSlots = (slots) => {return h('div', { class: 'container' }, [h('header', null, slots.header?.()),h('main', null, slots.default?.()),h('footer', null, slots.footer?.())])
}// 4.4 組件通信
const Parent = {setup() {const count = ref(0)return () => h(Child, {count: count.value,onIncrement: () => count.value++})}
}const Child = {props: ['count'],emits: ['increment'],setup(props, { emit }) {return () => h('button', {onClick: () => emit('increment')}, `Count: ${props.count}`)}
}

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

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

相關文章

結構型模式3.組合模式

結構型模式 適配器模式(Adapter Pattern)橋接模式(Bridge Pattern)組合模式(Composite Pattern)裝飾器模式(Decorator Pattern)外觀模式(Facade Pattern)享元…

服務器攻擊方式有哪幾種?

隨著互聯網的快速發展,網絡攻擊事件頻發,已泛濫成互聯網行業的重病,受到了各個行業的關注與重視,因為它對網絡安全乃至國家安全都形成了嚴重的威脅。面對復雜多樣的網絡攻擊,想要有效防御就必須了解網絡攻擊的相關內容…

Transformer 中縮放點積注意力機制探討:除以根號 dk 理由及其影響

Transformer 中縮放點積注意力機制的探討 1. 引言 自2017年Transformer模型被提出以來,它迅速成為自然語言處理(NLP)領域的主流架構,并在各種任務中取得了卓越的表現。其核心組件之一是注意力機制,尤其是縮放點積注意…

[python3]Excel解析庫-XlsxWriter

XlsxWriter 是一個用于創建 Excel .xlsx 文件的 Python 庫,它允許你編寫程序來生成 Excel 文件,而無需實際運行 Microsoft Excel 應用程序。XlsxWriter 支持寫入數據、應用格式化、插入圖表和圖形等多種功能,并且可以處理較大的數據集。它是一…

Linux下部署SSM項目

作者主頁&#xff1a;舒克日記 簡介&#xff1a;Java領域優質創作者、Java項目、學習資料、技術互助 文中獲取源碼 Linux部署SSM項目 打包項目 1、修改pom.xml文件&#xff0c;打包方式改為war <packaging>war</packaging>2、idea 通過maven的clean&#xff0c;…

Bytebase 3.0.1 - 可配置在 SQL 編輯器執行 DDL/DML

&#x1f680; 新功能 新增環境策略&#xff0c;允許在 SQL 編輯器內直接執行 DDL/DML 語句。 支持為 BigQuery 數據脫敏。 在項目下新增數據訪問控制及脫敏管理頁面。 在數據庫頁面&#xff0c;支持回滾到變更歷史的某個版本。 &#x1f514; 兼容性變更 禁止工單創建…

ansible 知識點【回顧梳理】

ansible 知識點 1. 劇本2. facts變量3. register變量4. include功能5. handlers6. when 條件7. with_items 循環8. Jinja2模板9. group_vars10. roles :star::star::star: 看起來字數很多&#xff0c;實際有很多是腳本執行結果&#xff0c;內容不多哦 1. 劇本 劇本很重要的就是…

LLM之RAG實戰(五十一)| 使用python和Cypher解析PDF數據,并加載到Neo4j數據庫

一、必備條件&#xff1a; python語言Neo4j數據庫python庫&#xff1a;neo4j、llmsherpa、glob、dotenv 二、代碼&#xff1a; from llmsherpa.readers import LayoutPDFReaderfrom neo4j import GraphDatabaseimport uuidimport hashlibimport osimport globfrom datetime …

MLU上使用MagicMind GFPGANv1.4 onnx加速!

文章目錄 前言一、平臺環境準備二、環境準備1.GFPGAN代碼處理2.MagicMind轉換修改env.sh修改run.sh參數解析運行 3.修改后模型運行 前言 MagicMind是面向寒武紀MLU的推理加速引擎。MagicMind能將人工智能框架&#xff08;TensorFlow、PyTorch、Caffe與ONNX等&#xff09;訓練好…

關于大數據的基礎知識(一)——定義特征結構要素

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于大數據的基礎知識&#xff08;一&a…

H5通過URL Scheme喚醒手機地圖APP

1.高德地圖 安卓URL Scheme&#xff1a;baidumap:// 官方文檔&#xff1a;https://lbs.amap.com/api/amap-mobile/guide/android/navigation IOS URL Scheme&#xff1a;iosamap:// 官方文檔&#xff1a;https://lbs.amap.com/api/amap-mobile/guide/ios/navi HarmonyOS NEXT U…

音視頻入門基礎:MPEG2-PS專題(5)——FFmpeg源碼中,解析PS流中的PES流的實現

音視頻入門基礎&#xff1a;MPEG2-PS專題系列文章&#xff1a; 音視頻入門基礎&#xff1a;MPEG2-PS專題&#xff08;1&#xff09;——MPEG2-PS官方文檔下載 音視頻入門基礎&#xff1a;MPEG2-PS專題&#xff08;2&#xff09;——使用FFmpeg命令生成ps文件 音視頻入門基礎…

國標GB28181-2022視頻平臺EasyGBS小知識:局域網ip地址不夠用怎么解決?

在局域網中&#xff0c;IP地址不足的問題通常不會在小型網絡中出現&#xff0c;但在擁有超過255臺設備的大型局域網中&#xff0c;就需要考慮如何解決IP地址不夠用的問題了。 在企業局域網中&#xff0c;經常會出現私有IP地址如192.168.1.x到192.168.1.255不夠用的情況。由于0…

spring boot啟動源碼分析(三)之Environment準備

上一篇《spring-boot啟動源碼分析&#xff08;二&#xff09;之SpringApplicationRunListener》 環境介紹&#xff1a; spring boot版本&#xff1a;2.7.18 主要starter:spring-boot-starter-web 本篇開始講啟動過程中Environment環境準備&#xff0c;Environment是管理所有…

springmvc前端傳參,后端接收

RequestMapping注解 Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Mapping public interface RequestMapping {String name() default "";AliasFor("path")String[] value() default {};AliasFor(&quo…

分布式鎖 Redis vs etcd

為什么要實現分布式鎖?為什么需要分布式鎖,分布式鎖的作用是什么,哪些場景會使用到分布式鎖?分布式鎖的實現方式有哪些分布式鎖的核心原理是什么 如何實現分布式鎖redis(自旋鎖版本)etcd 的分布式鎖(互斥鎖(信號控制)版本) 分布式鎖對比redis vs etcd 總結 為什么要實現分布式…

【Excel/WPS】根據平均值,生成兩列/多列指定范圍的隨機數/隨機湊出兩列數據

原理就是通過隨機生成函數和平均值函數。 適用場景&#xff1a;在總體打分后&#xff0c;需要在小項中隨機生成小分數 第一列&#xff1a;固定的平均值A2第二列&#xff1a; RANDBETWEEN(A2-10,A210)第三列&#xff1a;根據第二列用平均值函數算除 A2*2-B2這是隨機值1的公式&am…

芯片詳細講解,從而區分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU

目錄 芯片的概念結構 芯片的派系劃分 通用芯片&#xff08;CPU&#xff0c;MPU&#xff0c;GPU&#xff0c;DSP&#xff09; 定制芯片&#xff08;FPGA&#xff0c;ASIC&#xff09; 芯片之上的集成&#xff08;MCU&#xff0c;SOC&#xff0c;ECU&#xff09; 軟硬件的匹…

運動相機拍攝的視頻打不開怎么辦

3-10 GoPro和大疆DJI運動相機的特點&#xff0c;小巧、高清、續航長、拍攝穩定&#xff0c;很多人會在一些重要場合用來拍攝視頻&#xff0c;比如可以用來拿在手里拍攝快速運動中的人等等。 但是畢竟是電子產品&#xff0c;有時候是會出點問題的&#xff0c;比如意外斷電、摔重…

智能化文檔開發(DI)

這個文檔涉及到多模態&#xff08;文本、發票、訂單、語音&#xff09; 對于普通的文本&#xff0c;我們希望對某些實體的某些屬性挖空生成文檔模版&#xff0c;并根據預設字段填空最后生成正式文件對于發票、訂單&#xff0c;我們想提取它的字段信息&#xff0c;寫入DB對于一些…