Vue 3 中 h 方法示例详解

 更新时间:2025年03月10日 10:57:18   作者:yqcoder  
Vue3中的h方法用于创建虚拟DOM节点,是渲染函数的核心,它接受三个参数:type(节点类型)、props(属性对象)和children(子节点),通过示例展示了如何使用h方法创建简单的HTML元素、带有属性的元素、嵌套元素和自定义组件,感兴趣的朋友一起看看吧

在 Vue 3 中,h 函数是一个非常核心的概念,特别是在使用组合式 API (Composition API) 时。h 函数实际上是 Vue 的一个渲染函数,用于在组件中手动创建虚拟节点(VNodes)。这对于编写可重用和高性能的组件非常有用,尤其是在需要动态生成大量元素时。

h 函数的基本用法

h 函数的全名是 createElement,它是 Vue 3 中 render 函数的一部分。在 Vue 2 中,我们通常通过 this.$createElement 来访问这个功能,但在 Vue 3 中,我们直接使用 h 函数。

参数

h 函数接受三个参数:

  • 类型(Type):这是一个字符串或组件对象,表示要创建的元素的类型。例如,'div' 或 'span',或者是一个 Vue 组件。
  • 属性(Props):一个对象,包含元素的属性和事件监听器等。例如,{ class: 'my-class', onClick: () => {} }。
  • 子节点(Children):子节点可以是一个字符串、一个数组或者多个参数。如果子节点是数组,则每个元素都是一个虚拟节点。

正文开始

在 Vue 3 中,h 方法是一个用于创建虚拟 DOM 节点的函数,它是创建渲染函数的核心工具。

一、引入 h 方法

import { h } from "vue";
const MyComponent = {
  render() {
    return h("div", "Hello, Vue 3!");
  },
};

二、语法

h(type, props?, children?)

1. type

必填参数,表示要创建的节点类型。

字符串:表示 HTML 标签名,如 'div''span''p' 等。
组件对象:可以是一个普通的 Vue 组件对象。
异步组件:使用 defineAsyncComponent 定义的异步组件。
函数式组件:一个返回虚拟 DOM 节点的函数。

2. props

可选参数,是一个对象,包含要传递给节点的属性、特性和事件监听器。

h("input", {
  type: "text",
  placeholder: "Enter your name",
  onInput: (event) => console.log(event.target.value),
});

3. children

可选参数,表示节点的子节点。

字符串:表示文本节点。
数组:数组中的每个元素可以是另一个 h 调用的结果,或者是字符串、数字等。
插槽对象:用于传递插槽内容。

三、示例

1. 创建简单的 HTML 元素

import { h } from "vue";
const MyComponent = {
  render() {
    // 创建一个 div 元素,包含文本内容
    return h("div", "This is a simple div");
  },
};

2. 创建带有属性的 HTML 元素

import { h } from "vue";
const MyComponent = {
  render() {
    // 创建一个带有属性的 a 元素
    return h(
      "a",
      {
        href: "https://www.example.com",
        target: "_blank",
      },
      "Visit Example.com"
    );
  },
};

3. 创建嵌套的 HTML 元素

import { h } from "vue";
const MyComponent = {
  render() {
    // 创建一个嵌套的结构:div 包含一个 p 元素
    return h("div", [h("p", "This is a paragraph inside a div")]);
  },
};

4. 创建自定义组件

import { h } from "vue";
// 定义一个自定义组件
const MyCustomComponent = {
  props: ["message"],
  render() {
    return h("p", this.message);
  },
};
const ParentComponent = {
  render() {
    // 使用 h 方法创建自定义组件实例
    return h(MyCustomComponent, { message: "Hello from custom component" });
  },
};

到此这篇关于Vue 3 中 h 方法详解的文章就介绍到这了,更多相关Vue 3 h 方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决iView Table组件宽度只变大不变小的问题

    解决iView Table组件宽度只变大不变小的问题

    这篇文章主要介绍了解决iView Table组件宽度只变大不变小的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue中的data,computed,methods,created,mounted用法及说明

    vue中的data,computed,methods,created,mounted用法及说明

    这篇文章主要介绍了vue中的data,computed,methods,created,mounted用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定

    vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定

    这篇文章主要介绍了vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定的相关知识,本文通过实例代码相结合的形式给大家介绍的非常详细 ,需要的朋友可以参考下
    2018-09-09
  • vue3 Element Plus中icon图标不显示的解决方案

    vue3 Element Plus中icon图标不显示的解决方案

    这篇文章主要介绍了vue3 Element Plus中icon图标不显示的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue项目双滑块组件使用

    vue项目双滑块组件使用

    这篇文章主要介绍了vue项目双滑块组件使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 基于Vue实现消息提示功能

    基于Vue实现消息提示功能

    这篇文章主要为大家详细介绍了如何基于Vue实现简单的消息提示功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • Vue两个版本的区别和使用方法(更深层次了解)

    Vue两个版本的区别和使用方法(更深层次了解)

    在我们使用 vue时,我们可以引用两个不同版本的 Vue,分别是 Vue完整版(vue.js)和 Vue(vue.runtime.js )非完整版,那么它们的区别是什么呢,今天我们就来分析下这两个不同版本之间的区别,一起看看吧
    2020-02-02
  • Vue 2中ref属性的使用方法及注意事项

    Vue 2中ref属性的使用方法及注意事项

    这篇文章主要给大家介绍了关于Vue 2中ref属性的使用方法及注意事项的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • Vue3如何处理重复渲染代码的问题

    Vue3如何处理重复渲染代码的问题

    这篇文章主要来和大家一起探讨一下在Vue3项目中如何处理重复渲染代码的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • VUE中鼠标滚轮使div左右滚动的方法详解

    VUE中鼠标滚轮使div左右滚动的方法详解

    这篇文章主要给大家介绍了关于VUE中鼠标滚轮使div左右滚动的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论