Vue 入门到实战 七
第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函数的主要神秘地方就是Vue的h函数。
7.3 h()函数
h()函数是一个用于创建虚拟节点(VNode)的程序,也可以更准确地将其命名为createVNode(),以便简洁使用,它被称为h()。
7.3.1 基本参数
1.tag
代表一个HTML标签(String)、一个组件(Object)、一个函数(Function)或者null。使用null将渲染一个注释。这是一个必选参数。例如,【例7-2】中的'a'。
2.props
一个与attribute、prop和事件相对应的数据对象(Object),用于向创建的节点对象设置属性值,在模板中使用。这是一个可选参数。例如,【例7-2】中的{ href: '#' + this.title}。
3.children
子VNode,使用h()函数构建,或使用字符串获取“文本VNode”(String|Array)或者有slot的对象(Object)。这是一个可选参数。
7.3.2 约束

7.3.3 使用JavaScript代替模板功能
1.v-if和v-for指令
在模板中可以使用Vue的内置指令,比如v-if、v-for。但在渲染函数render中,无法使用这些内置指令,只能通过原生JavaScript实现。
【例7-3】v-if和v-for指令在render中的替代方案。

2.v-model指令
在render函数中也没有与v-model指令对应的API,需要使用JavaScript实现v-model指令双向绑定的逻辑。
【例7-4】在render函数中渲染一个输入框,并使用value属性和input事件实现v-model的双向绑定功能。

3.v-on指令
在渲染函数render中,对于v-on指令也需要编程实现。实现v-on指令功能时,我们必须为事件处理程序提供一个正确的prop属性名称,例如,要处理click事件,prop名称应该是onClick。
【例7-5】在render函数中渲染一个按钮,并处理按钮事件click。
4.事件修饰符和按键修饰符
对于.passive、.capture和.once事件修饰符,Vue在渲染函数中提供了处理程序的对象语法。

相关文章:
Vue 入门到实战 七
第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。然而在一些应用场景中,需要使用J…...
系统学习算法: 专题八 二叉树中的深搜
深搜其实就是深度优先遍历(dfs),与此相对的还有宽度优先遍历(bfs) 如果学完数据结构有点忘记,如下图,左边是dfs,右边是bfs 而二叉树的前序,中序,后序遍历都可…...
进程、线程、内存和IO模型的概念详解
进程、线程、内存和IO模型的概念详解 1 进程与线程1.1 进程1.1.1 进程分类1.1.2 进程的状态和转换1.1.3 僵尸进程和孤儿进程的区别1.1.4 进程之间的通信1.1.5 用户态和内核态1.1.6 用户空间和内核空间 1.2 线程1.2.1 线程的状态和转换1.2.2 进程与线程的区别 1.3 多进程和多线程…...
DeepSeek:AI领域的创新先锋
在人工智能领域,DeepSeek正以其独特的创新技术引领着行业的发展。作为一款高性能、低成本的AI模型,DeepSeek在架构设计、训练优化和应用场景等多个方面都展现出了显著的创新点。这些创新不仅使其在技术上取得了突破,也为AI的普及化和应用拓展…...
Labelme转Voc、Coco
Q:在github找的cv代码基本都是根据现有且流行的公共数据集格式组织的训练数据集,这导致我使用labelme标注好之后需要我们重新组织数据集 labelme2coco #!/usr/bin/env pythonimport argparse import collections import datetime import glob import j…...
pytorch实现变分自编码器
人工智能例子汇总:AI常见的算法和例子-CSDN博客 变分自编码器(Variational Autoencoder, VAE)是一种生成模型,属于深度学习中的无监督学习方法。它通过学习输入数据的潜在分布(Latent Distribution)&…...
使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
1. 导入必要的库 首先,导入我们需要的库:Numpy、Pytorch 和相关工具包。 import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import accuracy_score, recall_score, f1_score2. 自定义数据集 …...
JVM方法区
一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…...
【Python】第七弹---Python基础进阶:深入字典操作与文件处理技巧
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、字典 1.1、字典是什么 1.2、创建字典 1.3、查找 key 1.4、新增/修改元素 1.5、删除元素 1.6、遍历…...
指导初学者使用Anaconda运行GitHub上One - DM项目的步骤
以下是指导初学者使用Anaconda运行GitHub上One - DM项目的步骤: 1. 安装Anaconda 下载Anaconda: 让初学者访问Anaconda官网(https://www.anaconda.com/products/distribution),根据其操作系统(Windows、M…...
在实际开发中,如何正确使用 INT(1) 和 INT(10)
在实际开发中,如何正确使用 INT(1) 和 INT(10) 前言 在数据库设计和开发过程中,数据类型的选择至关重要。 最近,我在工作中遇到了一个关于MySQL中INT类型的误解问题,这让我意识到很多开发者对INT类型的理解存在误区。 本文将深…...
像接口契约文档 这种工件,在需求 分析 设计 工作流里面 属于哪一个工作流
οゞ浪漫心情ゞο(20***328) 2016/2/18 10:26:47 请教一下,像接口契约文档 这种工件,在需求 分析 设计 工作流里面 属于哪一个工作流? 潘加宇(35***47) 17:17:28 你这相当于问用例图、序列图属于哪个工作流,看内容。 如果你的&quo…...
GAMES101学习笔记(六):Geometry 几何(基本表示方法、曲线与曲面、网格处理)
文章目录 几何的表示方法隐式几何 Implicit Geometry代数曲面(Algebraic surface)构造实体几何CSG(Constructive Solid Geometry)距离函数(Distance Function)水平集方法(Level Set Methods)分型几何(Fractal) 显式几何 Explicit Geometry点云(Point Cloud)多边形网格(Polygon …...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.24 随机宇宙:生成现实世界数据的艺术
1.24 随机宇宙:生成现实世界数据的艺术 目录 #mermaid-svg-vN1An9qZ6t4JUcGa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vN1An9qZ6t4JUcGa .error-icon{fill:#552222;}#mermaid-svg-vN1An9qZ6t4JUc…...
深入解析:一个简单的浮动布局 HTML 示例
深入解析:一个简单的浮动布局 HTML 示例 示例代码解析代码结构分析1. HTML 结构2. CSS 样式 核心功能解析1. 浮动布局(Float)2. 清除浮动(Clear)3. 其他样式 效果展示代码优化与扩展总结 在网页设计中,浮动…...
爬虫基础(三)Session和Cookie讲解
目录 一、前备知识点 (1)静态网页 (2)动态网页 (3)无状态HTTP 二、Session和Cookie 三、Session 四、Cookie (1)维持过程 (2)结构 正式开始说 Sessi…...
HTMLCSS :下雪了
这段代码创建了一个动态的雪花飘落加载动画,通过 CSS 技术实现了雪花的下落和消失效果,为页面添加了视觉吸引力和动态感。 大家复制代码时,可能会因格式转换出现错乱,导致样式失效。建议先少量复制代码进行测试,若未能…...
力扣 84. 柱状图中最大的矩形
🔗 https://leetcode.cn/problems/largest-rectangle-in-histogram 题目 给一个数组 num 表示位置 i 上圆柱的高度,求圆柱可以勾勒出的矩形的最大面积 思路 枚举圆柱 i,以该圆柱为高,计算其可以组成的矩形的最大面积。记录这过…...
【Windows Server实战】生产环境云和NPS快速搭建
前置条件 本文假定你已达成以下前提条件: 有域控DC。有证书服务器(AD CS)。已使用Microsoft Intune或者GPO为客户机申请证书。服务器上至少有两张网卡(如果用虚拟机做的测试环境,可以用一张HostOnly网卡做测试&#…...
RHCSA——搭建FTP文件共享服务器
一、实验目的 1、掌握vsftpd服务器的配置方法 2、熟悉FTP客户端工具的使用 3、掌握常见的FTP服务器的故障排除 二、实验项目背景 某企业像架构一台FTP服务器,为企业局域网中的计算机提供文件传送的任务,为财务部门、销售部门和OA系统提供异地数据备…...
IM 即时通讯系统-50-[特殊字符]cim(cross IM) 适用于开发者的分布式即时通讯系统
IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术,提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…...
SSH代理實用指南
SSH是一種安全的遠程訪問協議,用於遠程登錄和代理工具,是一種通過SSH協議實現的網路代理,常用於將網路流量通過安全的SSH通道進行轉發。與傳統的HTTP代理不同,SSH代理能夠在多種協議下工作(如HTTP、HTTPS、FTP等&#…...
Python在线编辑器
from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…...
ZZNUOJ(C/C++)基础练习1041——1050(详解版)
1041 : 数列求和2 题目描述 输入一个整数n,输出数列1-1/31/5-……前n项的和。 输入 输入只有一个整数n。 输出 结果保留2为小数,单独占一行。 样例输入 3 样例输出 0.87注意sum 1相当于sumsum1 注意sum * 1相当于sumsum*1 C语言版 #include<stdio.h> // 包含…...
JavaScript系列(51)--解释器实现详解
JavaScript解释器实现详解 🎯 今天,让我们深入探讨JavaScript解释器的实现。解释器是一个将源代码直接转换为结果的程序,通过理解其工作原理,我们可以更好地理解JavaScript的执行过程。 解释器基础概念 🌟 …...
浅析DDOS攻击及防御策略
DDoS(分布式拒绝服务)攻击是一种通过大量计算机或网络僵尸主机对目标服务器发起大量无效或高流量请求,耗尽其资源,从而导致服务中断的网络攻击方式。这种攻击方式利用了分布式系统的特性,使攻击规模更大、影响范围更广…...
深度学习 Pytorch 神经网络的学习
本节将从梯度下降法向外拓展,介绍更常用的优化算法,实现神经网络的学习和迭代。在本节课结束将完整实现一个神经网络训练的全流程。 对于像神经网络这样的复杂模型,可能会有数百个 w w w的存在,同时如果我们使用的是像交叉熵这样…...
【回溯】目标和 字母大小全排列
文章目录 494. 目标和解题思路:回溯784. 字母大小写全排列解题思路:回溯 494. 目标和 494. 目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式…...
Linux系统上安装与配置 MySQL( CentOS 7 )
目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …...
Miniconda 安装及使用
文章目录 前言1、Miniconda 简介2、Linux 环境说明2.1、安装2.2、配置2.3、常用命令2.4、常见问题及解决方案 前言 在 Python 中,“环境管理”是一个非常重要的概念,它主要是指对 Python 解释器及其相关依赖库进行管理和隔离,以确保开发环境…...
