Vue 入门到实战 七

news/2025/2/3 8:32:53 标签: vue.js, 前端, javascript

7章 渲染函数

目录

7.1 DOM树

7.2 什么是渲染函数

7.3 h()函数

7.3.1 基本参数

7.3.2 约束

7.3.3 使用JavaScript代替模板功能


7.1 DOM

7.2 什么是渲染函数

在多数情况下,Vue推荐使用模板template来创建HTML。然而在一些应用场景中,需要使用JavaScript创建HTML。这时可以用渲染函数,它比模板更方便。

7-1】根据不同等级的锚点,显示不同的标题。

7-2】使用渲染函数render改写7-1】

<div id="app">
    <anchored-heading :level="1" title="锚点1">Hello world111!</anchored-heading>
    <anchored-heading :level="2" title="锚点2">Hello world222!</anchored-heading>
    <anchored-heading :level="3" title="锚点3">Hello world333!</anchored-heading>
    <anchored-heading :level="4" title="锚点4">Hello world444!</anchored-heading>
    <anchored-heading :level="5" title="锚点5">Hello world555!</anchored-heading>
</div>
<script src="js/vue.global.js"></script>
<script>
    const app = Vue.createApp({})
    app.component('anchored-heading', {
        render() {
            return Vue.h('h' + this.level,//tag参数
                [//children参数
                    Vue.h(
                        'a',//tag参数
                        {//props参数
                            href: '#' + this.title
                        },
                        this.$slots.default()//children参数
                    )
                ]
            )
        },
        props: {
            level: {
                type: Number,
                required: true
            },
            title: {
                type: String
            }
        }
    })
    app.mount('#app')
</script> 

render函数的主要神秘地方就是Vueh函数。

7.3 h()函数

h()函数是一个用于创建虚拟节点(VNode)的程序,也可以更准确地将其命名为createVNode(),以便简洁使用,它被称为h()

7.3.1 基本参数

1tag

代表一个HTML标签(String)、一个组件(Object)、一个函数(Function)或者null。使用null将渲染一个注释。这是一个必选参数。例如,7-2】中的'a'

2props

一个与attributeprop和事件相对应的数据对象(Object),用于向创建的节点对象设置属性值,在模板中使用。这是一个可选参数。例如,7-2】中的{ href: '#' + this.title}

3children

VNode,使用h()函数构建,或使用字符串获取“文本VNodeString|Array)或者有slot的对象(Object)。这是一个可选参数。

7.3.2 约束

7.3.3 使用JavaScript代替模板功能

1v-ifv-for指令

在模板中可以使用Vue的内置指令,比如v-ifv-for。但在渲染函数render中,无法使用这些内置指令,只能通过原生JavaScript实现。

7-3】v-ifv-for指令在render中的替代方案。

2v-model指令

render函数中也没有与v-model指令对应的API,需要使用JavaScript实现v-model指令双向绑定的逻辑。

7-4】render函数中渲染一个输入框,并使用value属性和input事件实现v-model的双向绑定功能。

3v-on指令

在渲染函数render中,对于v-on指令也需要编程实现。实现v-on指令功能时,我们必须为事件处理程序提供一个正确的prop属性名称,例如,要处理click事件,prop名称应该是onClick

7-5】render函数中渲染一个按钮,并处理按钮事件click

4.事件修饰符和按键修饰符

对于.passive.capture.once事件修饰符,Vue在渲染函数中提供了处理程序的对象语法


http://www.niftyadmin.cn/n/5840647.html

相关文章

FFmpeg工具使用基础

一、FFmpeg工具介绍 FFmpeg命令行工具主要包括以下几个部分: ‌ffmpeg‌:编解码工具‌ffprobe‌:多媒体分析器‌ffplay‌:简单的音视频播放器这些工具共同构成了FFmpeg的核心功能,支持各种音视频格式的处理和转换‌ 二、在Ubuntu18.04上安装FFmpeg工具 1、sudo apt-upda…

使用PyQt5绘制带有刻度的温度计控件

前言&#xff1a;进入学习Python开发上位机界面的第二阶段&#xff0c;学习如何开发自定义控件&#xff0c;从常用的控件入手学习&#xff0c;本期主要学习如何使用PyQt5绘制带有刻度的温度计控件。 1. 先找到一篇参考文章 参考文章&#xff1a;Qt编写自定义控件5-柱状温度计…

大厂面试题备份20250127

20250127 机器学习和深度学习的异同 同&#xff1a; 都是数据驱动&#xff1b; 以数学和统计方法为基础&#xff0c;通过优化目标函数&#xff08;如最小化误差&#xff09;来完成学习任务&#xff1b; 都需要数据集 异&#xff1a; 总结 机器学习适用于数据规模较小且需…

Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)

目前网络上已经有很多关于Zabbix如何推送告警信息到钉钉机器人、到邮件等文章。 但是在搜索下来&#xff0c;发现缺少了对告警信息的美化的文章。 本文不赘述如何对Zabbix对接钉钉、对接邮件&#xff0c;仅介绍我采用的美化消息模板的内容。 活用AI工具可以减轻很多学习、脑力负…

【爬虫】JS逆向解决某药的商品价格加密

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…

更高效地使用Adobe软件,提升创作质量

在现代教育环境中&#xff0c;拥有一个edu教育邮箱不仅可以为学生提供多种学习资源&#xff0c;还能享受许多软件的免费使用权。相比于使用存在安全隐患的破解版软件&#xff0c;建议大家通过正规渠道获取edu邮箱&#xff0c;以便合法使用Adobe系列软件等工具。获取edu邮箱的方…

在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式有多种...

在C中&#xff0c;成员变量必须在对象构造完成前初始化&#xff0c;但初始化的方式可以有多种&#xff0c;具体取决于成员变量的类型和设计需求。以下是C中成员变量初始化的规则和相关机制&#xff1a; 1. 成员变量必须初始化 如果成员变量是基本类型&#xff08;如 int、doub…

UE5 蓝图学习计划 - Day 7:摄像机与视角控制

在游戏开发中&#xff0c;摄像机视角 是玩家与游戏互动的关键环节。Unreal Engine 5 提供了多种方式来设置摄像机&#xff0c;包括第一人称视角、第三人称视角&#xff0c;以及动态跟随摄像机。在本篇文章中&#xff0c;我们将学习如何在角色蓝图中添加摄像机组件&#xff0c;实…