Vue 3 中的 h() 与 mergeProps() API 详解

ops/2024/9/23 4:50:44/

前言

        在 Vue 3 中,随着 Composition API 的引入,我们有了更多的灵活性和控制权来构建我们的组件。其中,h() 函数和 mergeProps() 是在构建渲染函数或 JSX/TSX 时经常使用的两个工具。下面,我将对这两个 API 进行详细的解释。

h() 函数

   h() 函数,也被称为 createElement,是 Vue 3 中用于创建虚拟 DOM 节点的函数。它通常用于 JSX/TSX 语法中,或者当你需要手动编写渲染函数时。h() 函数接受三个参数:

  1. tag:一个字符串,作为元素的名称;或者一个组件对象。
  2. data:一个包含组件的 props/attributes、DOM 属性、DOM 属性修饰符、插槽等的对象。
  3. children:子虚拟节点 (VNodes),由 h() 或其他合法的参数(如字符串、数字等)创建。

使用示例:

import { h, createApp } from 'vue'  const HelloWorld = {  render() {  return h('div', 'Hello, World!')  }  
}  const App = {  render() {  return h('div', [  h('h1', 'Welcome to My App'),  h(HelloWorld)  ])  }  
}  createApp(App).mount('#app')

        在这个例子中,h() 函数被用来创建 div 元素和 HelloWorld 组件的虚拟 DOM 节点。这些节点随后被 Vue 的运行时系统用来更新实际的 DOM。

mergeProps() 函数

  mergeProps() 是 Vue 3 的内部 API,它用于合并多个 props 对象。当你在使用 setup() 函数或渲染函数时,有时你可能需要合并来自不同来源的 props,这时 mergeProps() 就派上了用场。虽然这个 API 主要用于内部,但在某些高级场景中,了解它的工作原理也是很有帮助的。

注意: 在大多数情况下,你不需要直接使用 mergeProps(),因为 Vue 会自动为你处理 props 的合并。但在编写自定义高阶组件或工具函数时,了解它的工作原理可能是有用的。

为什么要使用这些函数?

  • h() 函数是 Vue 3 虚拟 DOM 系统的基础。它允许你以编程的方式描述 UI 的结构,这对于构建动态和可复用的 UI 组件非常有用。
  • mergeProps()(尽管不直接暴露给开发者)在内部处理 props 的合并,确保了当多个 props 来源(如父组件传递的 props、组件自身的 props 默认值等)存在时,能够正确地合并这些 props。

        通过理解这两个函数的工作原理,你可以更深入地了解 Vue 3 的工作机制和如何更高效地编写 Vue 组件。 


http://www.ppmy.cn/ops/33930.html

相关文章

【centos】vmware安装airflow流程

文章目录 1.下载系统https://mirrors.aliyun.com/centos/7/isos/x86_64/ 选择DVD20092.在VMware中,除了修改安装位置,其它选择默认安装centos73.用户名为root,登录4.网络适配器为桥接模式。5.使用命令消除显示器警告。6.安装anaconda6.1下载包&#xff1…

【微服务】分布式事务(通过Seata解决分布式事务问题)

分布式事务 分布式事务Seata微服务集成SeataXA模式XA模式使用 AT模式AT模式实现 分布式事务 在分布式系统中,如果一个业务需要多个服务合作完成,而且每一个服务都有事务,多个事务必须同时成功或失败,这样的事务就是分布式事务&am…

初识webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令,最终产生了哪些变更,将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…

React-Native制作一个通过照片和视频识别鸟类的安卓app

前言 首先简单介绍一下这个app是干啥的,实际上我的标题已经差不多说完了.....就是用户可以上传带有鸟类的图片或者视频,然后就可以得到相应的识别效果,这个app的需求是来自于我的一位朋友,所以我就做出来了 正文 讲一下基本用到的技术栈吧,前端用的react-native,后端用的是f…

(三)JVM实战——对象的内存布局与执行引擎详解

对象的内存布局 对象的实例化 对象的创建方式 - new的方式 - Class的newInstance():反射的方式 - Construct的newInstance() - clone:实现Cloneable接口,默认浅拷贝 - 使用反序列化:将二进制流转化为内存对象 创建对象的步骤 - 判断对象对应的类是否加载、链接、初…

银行智能化数据安全分类分级实践分享

文章目录 前言一、数据安全智能分类分级平台建设背景二、数据安全分类分级建设思路和实践1、做标签– 数据安全标签体系2、打标签– 鹰眼智能打标平台 3.03、用标签– 全行统一“数据安全打标签结果”服务提供前言 随着国家对数据安全的高度重视,以及相关法律法规的出台,数据…

qwen-vl微调

1.数据格式转换 模版格式: [{"id": "identity_0","conversations": [{"from": "user","value": "你好"},{"from": "assistant","value": "我是Qwen-V…

AI新突破:多标签预测技术助力语言模型提速3倍

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言:多标签预测的新视角 在人工智能领域,尤其是在自然语言处理(NLP)中,预测模型的训练方法一直在…