iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue h函数的使用详解
  • 546
分享到

Vue h函数的使用详解

2024-04-02 19:04:59 546人浏览 薄情痞子
摘要

目录一、认识二、使用1、h() 参数2、简单的使用3、实现一个计数器案例4、函数组件和插槽的使用三、jsx的使用1、jsx的认识2、下载Babel插件支持Vue(现在貌似脚手架直接支

一、认识

文档:https://v3.cn.vuejs.org/guide/render-function.html#dom-%E6%A0%91

​ h() 到底会返回什么呢?其实不是一个实际的 DOM 元素。它更准确的名字可能是 createnodeDescription,因为它所包含的信息会告诉 Vue 页面上需要渲染什么样的节点,包括及其子节点的描述信息。我们把这样的节点描述为“虚拟节点 (virtual node)”,也常简写它为 VNode 。“虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼。

二、使用

文档:Https://v3.cn.vuejs.org/guide/render-function.html#h-%E5%8F%82%E6%95%B0

1、h() 参数

h() 函数是一个用于创建 VNode 的实用程序。也许可以更准确地将其命名为 createVNode(),但由于频繁使用和简洁,它被称为 h() 。它接受三个参数:

// @returns {VNode}
h(
    // {String | Object | Function} tag
    // 一个 HTML 标签名、一个组件、一个异步组件、或
    // 一个函数式组件。
    //
    // 必需的。
    'div',

    // {Object} props
    // 与 attribute、prop 和事件相对应的对象。
    // 这会在模板中用到。
    //
    // 可选的(在开发时。建议传,实在没有传的时候,传入 null)
    {},

    // {String | Array | Object} children
    // 子 VNodes, 使用 `h()` 构建,
    // 或使用字符串获取 "文本 VNode" 或者
    // 有插槽的对象。
    //
    // 可选的。
    [
        'Some text comes first.',
        h('h1', 'A headline'),
        h(MyComponent, {
            someProp: 'foobar'
        })
    ]
)

2、简单的使用

3、实现一个计数器案例

<script>

import "./style.CSS"
import { h, ref } from "vue";

export default {
    // data 的写法
    // data() {
    //     return {
    //         counter: 0
    //     }
    // },
    setup() {
        const counter = ref(0)
        return { counter }
    },
    
    render() {
        return h("div", null, [
            h("h1", null, `当前计数:${this.counter}`),
            h("button", { onClick: () => this.counter++, class: "button" }, "加 1"),
            h("button", { onClick: () => this.counter--, class: "button" }, "减 1")
        ])
    }
}
</script>

修改成纯setup的写法:

<script>

import "./style.css"
import { h, ref } from "vue";

export default {
    // data 的写法
    // data() {
    //     return {
    //         counter: 0
    //     }
    // },
    setup() {
        const counter = ref(0)
        return () => {
            return h("div", null, [
                h("h1", null, `当前计数:${counter.value}`),
                h("button", { onClick: () => counter.value++, class: "button" }, "加 1"),
                h("button", { onClick: () => counter.value--, class: "button" }, "减 1")
            ])
        }
    }
}
</script>

4、函数组件和插槽的使用

1)父组件

<script>
import { h, ref } from "vue";
import Test from "./components/Test.vue"
export default {
    setup() {
        return {}
    },
    render() {
        return h(Test, null, {
            // default 对应的是一个函数,default是默认插槽
            default: props => h("span", null, "父传入到组件中的内容:" + props.name)
        })
    }
}
</script>

2)子组件

<script>
import { h } from "vue";

export default {
    
    render() {
        return h("div", null, [
            h("div", null, "我是子组件"),
            
            this.$slots.default ? this.$slots.default({ name: "哈哈哈" }) : h("div", null, "我是子组件的默认值")
        ])
    }
}
</script>

注:在项目中,如果你像上面一样写代码,就太苦逼了,所以这个时候就要用 JSX。

三、jsx的使用

1、jsx的认识

jsx我们通常会通过Babel来进行转换(React编写的jsx就是通过babel转换的);

对于Vue来说,我们只需要在Babel中配置对应的插件即可;

文档:https://v3.cn.vuejs.org/guide/render-function.html#jsx

2、下载Babel插件支持vue(现在貌似脚手架直接支持)

npm install @vue/babel-plugin-jsx -D

3、配置babel

1)在根目录下创建 .babel.config.js

2)在.babel.config.js 里面加入,如下代码

module.exports = {
    presets: [
        "@/vue/cli-plugin-babel/preset"
    ],
    plugins: [
        "@vue/babel-plugin-jsx"
    ]
}

4、简单的使用

<script>
import { ref } from 'vue'
export default {
    setup() {
        let counter = ref(0)
        return { counter }
    },
    render() {
        return (
            <div>
                <div>JSX的使用</div>
                <h2>当前数字:{this.counter}</h2>
            </div>


        )
    }
}
</script>

5、计数器案例

<script>
import { ref } from '@vue/reactivity'

export default {
    setup() {
        let counter = ref(0)
        function add() {
            counter.value++
        }
        function decrement() {
            counter.value--
        }
        return { counter, add, decrement }
    },
    render() {
        return (
            <div>
                <div>JSX的使用</div>
                <h2>当前数字:{this.counter}</h2>
                <button onClick={this.add}>加 1</button>
                <button onClick={this.decrement} >减 1</button>
            </div >
        )
    }
}
</script>

6、组件和插槽的使用

1)父组件

<script>
import { ref } from '@vue/reactivity'
import Test from "./components/Test.vue"
export default {
    setup() {
        let counter = ref(0)
        function add() {
            counter.value++
        }
        function decrement() {
            counter.value--
        }
        return { counter, add, decrement }
    },
    render() {
        return (
            <div>
                <div>JSX的使用</div>
                {}
                <h2>当前数字:{this.counter}</h2>
                <button onClick={this.add}>加 1</button>
                <button onClick={this.decrement} >减 1</button>
                <hr />
                <Test>
                    {}
                    {{ default: props => <p>我是父传入子的</p> }}
                </Test>
            </div >
        )
    }
}
</script>

2)子组件

<script>
export default {
    
    render() {
        return (
            <div>
                <p>我是组件</p>
                {}
                {this.$slots.default()}
            </div>
        )
    }
}
</script>

 注:如果你要h函数来写组件,请仔细查看文档,以上讲解,只是入门级。

到此这篇关于Vue h函数的使用详解的文章就介绍到这了,更多相关Vue h函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue h函数的使用详解

本文链接: https://www.lsjlt.com/news/161385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue h函数的使用详解
    目录一、认识二、使用1、h() 参数2、简单的使用3、实现一个计数器案例4、函数组件和插槽的使用三、jsx的使用1、jsx的认识2、下载Babel插件支持vue(现在貌似脚手架直接支...
    99+
    2022-11-12
  • vue中的render函数、h()函数、函数式组件详解
    目录一、什么是render二、vue中的render三、函数式组件补充 h函数使用场景一、什么是render 官网:用于编程式地创建组件虚拟 DOM 树的函数。 在我们使用webpa...
    99+
    2023-02-09
    vue render函数 vue  h()函数 vue函数式组件
  • vue2.x中h函数(createElement)与vue3中的h函数详解
    目录1. vue2.x的 h 函数(createElement)2. vue3 h函数配置项2.1 v-model实现(以下开始为官网实现)2.2 v-on2.3 事件修饰符2.4 ...
    99+
    2022-12-24
    vue3 h函数 vue h函数 vue2.x h函数
  • VUE3中h()函数和createVNode()函数的使用解读
    目录h()函数和createVNode()函数的使用使用方法VUE3中h方法和createVnode的实现在公共包shared里写上ShapeFlags在runtime-core模块...
    99+
    2022-11-13
  • Vue3中的h函数怎么使用
    这篇文章主要讲解了“Vue3中的h函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中的h函数怎么使用”吧!简介众所周知,vue内部构建的其实是虚拟DOM,而虚拟DOM是由虚...
    99+
    2023-07-06
  • Vue3中的h函数如何使用
    HelloWorld.vue<script setup lang="ts"> import { ref } from 'vue'; const param = ref("Hello...
    99+
    2023-05-14
    Vue3
  • Vue3中的h函数及使用小结
    目录简介简单使用参数使用进阶使用函数组件插槽参考资料:专栏目录请点击 简介 众所周知,vue内部构建的其实是虚拟DOM,而虚拟DOM是由虚拟节点生成的,实质上虚拟节点也就是一个js对...
    99+
    2023-03-06
    Vue3 h函数 Vue3 h函数用法
  • JavaScript函数的使用详解
    目录1. 声明函数2. 调用函数3. 函数的参数4. 函数的返回值5. arguments的使用6. 函数可以调用另外一个函数7. 函数的两种声明方式总结1. 声明函数2. 调用函数...
    99+
    2022-11-12
  • Python的函数使用详解
    目录前言1 跳出循环-break2 python函数2.1 内置函数2.2 自定义函数2.3 main函数前言 在两种python循环语句的使用中,不仅仅是循环条件达到才能跳出循环体...
    99+
    2022-11-12
  • tensor.squeeze函数和tensor.unsqueeze函数的使用详解
    tensor.squeeze() 和 tensor.unsqueeze() 是 PyTorch 中用于改变 tensor 形状的两个函数,它们的作用如下: tensor.squeez...
    99+
    2023-03-09
    tensor.squeeze函数 tensor.unsqueeze函数
  • vue函数@click.prevent的使用解析
    目录@click.prevent的使用@click.prevent的作用是什么?@click.stop与@click.prevent@click.stop@click.prevent...
    99+
    2022-11-13
  • Linux lseek函数的使用详解
    注:如果文章内容有误,请留言指出,谢谢合作。 名字 Name : lseek - reposition read/write file offset lseek函数的作用是用来重新定位文件读写的位移。 头文件以及函数声...
    99+
    2022-06-04
    Linux lseek函数 Linux lseek
  • MySQL函数Locate的使用详解
    Locate函数主要的作用是判断一个字符串是否包含另一个字符串,如 Locate(str,sub) > 0,表示sub字符串包含str字符串;Locate(str,sub) = 0,表示sub字符串不包含str字符...
    99+
    2022-08-15
    MySQLLocate函数 MySQLLocate
  • 详解Vue 自定义hook 函数
    目录定义使用封装发ajax请求的hook函数(ts版本)定义 什么是hook 本质是一个函数,把 setup 函数中使用的 Composition API (组合API)进行了封装类...
    99+
    2022-11-13
  • python3中apply函数和lambda函数的使用详解
    目录lambda函数lambda是什么lambda用法详解lambda + maplambda + filterlambda + reduce避免过度使用lamb...
    99+
    2022-11-13
  • VUErender函数使用和详解
    目录前言render的作用render函数讲解render和template的区别render举例总结 前言 在平时编程时,大部分是通过template来创建html。但是在一些特殊...
    99+
    2022-11-12
  • MFC MoveWindow();函数使用详解
    MFC的MoveWindow()函数用于移动和调整窗口的位置和大小。它可以用于MFC中的CWnd类的对象,包括对话框、窗口和控件等。...
    99+
    2023-09-02
    MFC
  • python 使用enumerate()函数详解
    一、enumerate() 函数简介 enumerate()是python的内置函数,将一个可遍历iterable数据对象(如list列表、tuple元组或str字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。 ...
    99+
    2023-09-08
    python 开发语言
  • python 使用enumerate()函数详解
    目录一、enumerate() 函数简介二、使用enumerate()函数(1)使用for循环(2)使用enumerate()一、enumerate() 函数简介 enumerate...
    99+
    2022-11-11
  • C++ push_back()函数使用详解
    最近在学习Opencv,用C++写程序,做了一个虚拟画笔的项目,即通过摄像头采集视频图像信息,识别视频中的画笔,并画笔在空中的划痕显示在视频图像上。在进行到划痕显示的,由于视频是实时...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作