Vue项目中render函数的使用

vue2&&vue3--render函数(h) 此更改不会影响<template>用户。h现在是全局导入,而不是作为参数传递给渲染函数更改渲染函数参数,使其在有状态组件和函数组件的表现更加一致VNode 现在有一个扁平的 prop 结构请继续阅读来获取更多信息! 阅读详情

Vue项目中,大多数情况我们都可以通过模板来创建HTML, 有些场景需要使用JavaScript来动态创建HTML,这种情况我们可以使用render函数来实现,下面我们来看下详细使用方法。

函数调用简写

render: function (createElement) {
  return createElement(App)
}

按照ES6语法简写函数

render (createElement) {
  return createElement(App)
}

再简写

render (createElement) => {
  return createElement(App)
}

再简写

render (h) => h(App)

h的含义来自于Hyperscript,意思是“生成HTML结构的script脚本”

入参详细说明

// @returns {VNode}
createElement(
  // {String | Object | Function}
  // 一个 HTML 标签名、组件选项对象,或者
  // resolve 了上述任何一种的一个 async 函数。必填项。
  'div',

  // {Object}
  // 一个与模板中 attribute 对应的数据对象。可选。
  {
    // ...
  },

  // {String | Array}
  // 子级虚拟节点 (VNodes),由 `createElement()` 构建而成,
  // 也可以使用字符串来生成“文本虚拟节点”。可选。
  [
    '先写一些文字',
    createElement('h1', '一则头条'),
    createElement(MyComponent, {
      props: {
        someProp: 'foobar'
      }
    })
  ]
)
  • 第一个参数(必填),可以是字符串、对象或函数,字符串通常为HTML标签名,对象通常为组件,函数通常为返回标签或对象的异步函数
  • 第二个参数(非必填),可以是对象,通常为attribute 对应的数据对象
  • 第三个参数(非必填),可以是字符串或数组,数组通常用来传递子级虚拟节点

下面详细看下第二个参数都可以指定哪些内容

{
  // 与 `v-bind:class` 的 API 相同,
  // 接受一个字符串、对象或字符串和对象组成的数组
  'class': {
    foo: true,
    bar: false
  },
  // 与 `v-bind:style` 的 API 相同,
  // 接受一个字符串、对象,或对象组成的数组
  style: {
    display: isShow ? 'auto' : 'none',
    //可以通过三元表达式和CSS结合的办法控制显示和隐藏
    color: 'red',
    fontSize: '14px'
  },
  // 普通的 HTML attribute
  attrs: {
    id: 'foo',
    //data-xx形式指定元素携带参数,可通过事件中e.target.dataset.xx获取
    'data-name': 'bar'
  },
  // 组件 prop
  props: {
    myProp: 'bar'
  },
  // DOM property
  domProps: {
    //innerHTML指定为可被信任的HTML可用来直接指定HTML内容,需慎用,避免xss攻击
    innerHTML: 'baz'
  },
  // 事件监听器在 `on` 内,
  // 但不再支持如 `v-on:keyup.enter` 这样的事件修饰符。
  on: {
    click: e => {
      console.log(e.target.dataset.name) //bar
    },
    input: this.clickHandler2
  },
  // 仅用于组件,用于监听原生事件,而不是组件内部使用
  // `vm.$emit` 触发的事件。
  nativeOn: {
    click: this.nativeClickHandler
  },
  // 自定义指令。注意,你无法对 `binding` 中的 `oldValue`
  // 赋值,因为 Vue 已经自动为你进行了同步。
  directives: [
    {
      name: 'my-custom-directive',
      value: '2',
      expression: '1 + 1',
      arg: 'foo',
      modifiers: {
        bar: true
      }
    }
  ],
  // 作用域插槽的格式为
  // { name: props => VNode | Array<VNode> }
  scopedSlots: {
    default: props => createElement('span', props.text)
  },
  // 如果组件是其它组件的子组件,需为插槽指定名称
  slot: 'name-of-slot',
  // 其它特殊顶层 property
  key: 'myKey',
  ref: 'myRef',
  // 如果你在渲染函数中给多个元素都应用了相同的 ref 名,
  // 那么 `$refs.myRef` 会变成一个数组。
  refInFor: true
}

第三个参数以数组形式传入虚拟子节点,数组类似于下面的形式

[
  (h) => h(App),
  (h) => h(App)
]

简单示例

render (h) => {
  return h('div',{
    style:{
      color: red
    }
  },[
    h('p',{
      on: click () => {
        console.log('test1')
      }
    },'test1'),
    h('p',{
      on: click () => {
        console.log('test2')
      }
    },'test2')
  ])
}
Vue(六) render函数、Vue.config.js配置文件,ref属性,props配置项、mixin混入、插件、scoped reder函数、Vue.config.js配置文件、ref属性、props配置项、mixin混入、Vue插件、scoped样式 阅读详情

相关推荐

VUE3 之 render 函数的使用 - 这个系列的教程通俗易懂,适合自学

目录1. 概述2. render 函数3. 综述4. 个人公众号老话说的好:不用想的太多、太远,做好当天的事,知道明天要做什么就可以了。言归正传,今天我们来聊聊 VUE 中 render 函数的使用。2.1 一个简单的例子 这个例子中,我们用到了之前学的 子组件 和 插槽,实现了对主组件中的文字加 h 标签的功能。2.2 依据数据,改变 h 标签 这个例子中,我们希望依据数据 myLevel 的值,改变主组件中文字的 h 标签,1 对应 h1,2 对应 h2。2.3 更多的 h 标签 我们希望

追风人的博客 1万+

Vue 中的 Render 全面详解 (渲染函数 & JSX)

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。简单的说,在 Vue 中我们使用模板 HTML 语法组建页面的,使用 Render 函数我们可以用 Js 语言来构建 DOM。因为 Vue 是虚拟 DOM,所以在拿到 Template 模板时也要转译成 VNode 的函数,而用 Render 函数构建 DOM,Vue 就免去了转译的过程。

小太阳的博客 2万+

c#窗体应用(.NET Framework)项目对Yaml文件进行写入与读取,Yaml数据转换成json

用到的技术与版本准备工作Yaml数据在C#中进行定义对Yaml文件的读取与写入代码的添加窗体控件控制操作写入数据到Yaml文件读取Yaml文件数据Yaml数据转换成json改进——对yaml文件读取时根据yaml文件中的键进行获取,对c#中怎么取名字无关yaml文件中多个数据读取遇到的问题总结的小点参考的文章在对Yaml文件进行读取前,先将Yaml文件中的数据结构在c#中进行定义,以便后面更好的读取。这里对这四个类型进行举例(这里为了想看看这四个类型到Yaml文件的格式是什么样子的)

永远年轻 1587

【Vue】render函数使用和详解

前言 在平时编程时,大部分是通过template来创建html。但是在一些特殊的情况下,使用template方式时,就无法很好的满足需求,在这个时候就需要 通过JavaScript 的编程能力来进行操作。此时,就到了render函数展示拳脚去时候了。 render的作用 在官网的这里示例中,使用组件,将相同的内容通过solt放进h1-h6的标签中,在使用传统方式时,代码不仅冗长,而且在每一个级别的标题中重复书写了 ,在要插入锚点元素时还要再次重复。而使用render函数后,代码就精简了很多。 Vue.com

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2万+

实战:如何通过修改VTS和HTS调整GC4653 sensor帧率(附完整计算步骤)

本文以GC4653图像传感器为例,详细解析了通过修改VTS和HTS寄存器来精确调整输出帧率的完整流程。文章深入剖析了帧率计算公式FPS = PCLK / (VTS × HTS)的核心原理,并提供了从获取寄存器参数、计算目标VTS值到系统验证的实战步骤,帮助工程师掌握独立优化Sensor性能、提升低照度画质的关键技能。

gin88的博客 338

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1328

Vue中的render函数

render函数是 Vue 组件的一个方法,用于返回一个虚拟节点(VNode)结构,该结构将被 Vue 转换为真实的 DOM 元素。

承蒙关照! 6383

利用WI生成无线信道数据

选取DeepMIMO的一个射线追踪场景O1(Outdoor 1)Scenario,工作频率为3.5GHz。有两条街和一个十字路口的户外场景18个基站和超过一百万个用户18个基站(BSs):BS1-BS18.每个基站的高度是8米每个基站的天线阵列是isotropic天线三个统一的x-y用户网格用户的总计数量为:1184923每个用户网格中的第一个用户总是(x,y)坐标最低的用户 所有用户的高度是2m每个用户的每个天线阵列是isotropic天线定义射频追踪场景。

bingbingaidaima的博客 5601

金山实习纪vue篇——render函数的使用

render函数使用 秋招快手、百度、字节面试的不断失利,反而帮助自己积累了更多的大场面试经验,终于在11月初拿到了金山的前端实习offer。作为一名非双一流的普通本科生能进入到这样的大厂实习,属实感到幸运。特此记录实习过程中的经验分享与大家。 1. render函数的作用 render 函数 跟 template 一样都是创建 html 模板的,但是有些场景中用 template 实现起来代码冗长繁琐而且有大量重复,这时候就可以用 render 函数。 官网例子:子组件想要根据父组件传递的 level 值

Mrxcguo的博客 1548

手把手教你配置C6678的SPI启动:从NorFlash烧写到多核加载的完整流程

本文详细介绍了TMS320C6678多核DSP的SPI启动全流程,包括硬件准备、镜像文件生成与转换、NorFlash烧写与验证、多核启动同步机制以及常见问题排查。通过实战演示,帮助开发者高效配置SPI启动模式,解决启动失败、多核同步异常等问题,提升嵌入式系统开发效率。

weixin_27076351的博客 151

机器人的“大脑”进化论:从专用控制器到高性能SoC的异构计算时代

摘要:随着AI与机器人技术融合,高性能芯片成为机器人智能化的关键。本文分析了机器人对芯片的核心需求,包括多模态数据处理、实时控制和智能决策能力。系统级芯片(SoC)因集成CPU、GPU/NPU等模块而成为主流选择。市场呈现分层格局:中低端设备(如扫地机器人)采用"MCU+轻量SoC"方案,满足基础功能;高端机器人则依赖"高性能SoC+独立GPU"处理复杂任务。除主控芯片外,完整的机器人系统还需传感器接口、驱动、通信等配套芯片。未来,芯片技术的进步将持续推动机器人智能化

致力于lidar应用开发 82

详解在vue项目中使用render函数

详解在vue项目中使用render函数

xh888zw的博客 6341

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 995

vue项目中 render函数直接操作html元素报错

vue项目中 render函数直接操作html元素报错 vue文件中,写法如下,会报语法错误 1 2 3 4 5 6 7 8 9 10 11 12 13 render(h, context) { const { icon, title } = context.props const vnodes = [] if(ico...

weixin_46180366的博客 2382

基于卷积神经网络的遥感图像地物分类

AI:89-基于卷积神经网络的遥感图像地物分类 基于卷积神经网络的遥感图像地物分类是一个令人兴奋的领域,它在环境监测、城市规划、农业、国防等领域具有广泛的应用。深度学习技术为我们提供了更准确、高效的工具,有望在未来进一步提高分类性能。在本文中,我们探讨了卷积神经网络的工作原理、数据准备、模型构建、训练和评估过程,并提供了多个代码示例。此外,我们讨论了地物分类的应用和挑战,以及未来的发展趋势。

一键难忘的博客 2717

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

vue的HelloWorld项目结构分析、实现自己的一个简单Vue应用、render函数的理解、修改main.js名称为app.js

导入的这个是vue的runtime build,由vue/package.json的module属性值dist/vue.runtime.esm.js决定,不包含template解析器。Vue的项目底层还是用webpack进行打包的,webpack的配置文件是webpack.config.js,这个配置文件我们访问不到。在Vue中我们可以通过vue.config.js对webpack的一些配置进行配置。public/index.html和src/main.js我们使用前面创建的项目的。

Bulut0907 1313

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Vue 脚手架创建项目的的render函数

render函数 import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app') 第一次接触这一段代码,不是很清楚render函数是什么用处,但是按照组件的注册的想法,可以大概猜测,该函数可能处理了components、template等配置 我们按照原先的vue的写法代替这一段代码 impor

qq_56303170的博客 295

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vue中render函数详解

由于vue项目默认引入残缺版的vue.js,缺少模板解析器,所以在入口文件中创建vue示例时需要借助render函数进行渲染。在vue项目中的入口文件中,我们会看到以下这段代码。最后将参数名换掉,就得到了。

weixin_46805497的博客 364

Vue项目 使用iView 通过render函数 实现 InputNumber 的双向数据绑定

Vue项目 使用iView 通过render函数 实现 InputNumber 的双向数据绑定 问题:在以下表格中使用InputNumber需要进行双向数据绑定,但是动态生成的InputNumber输入框组件无法绑定v-model,可以通过render函数进行双向数据绑定。 template部分 <Table border stripe :column...

weixin_43501588的博客 2400

render方法进行html跳转报错,vue项目中 render函数直接操作html元素报错

vue文件中,写法如下,会报语法错误render(h, context) {const { icon, title } = context.propsconst vnodes = []if (icon) {vnodes.push()}if (title) {vnodes.push({(title)})}return vnodes}两种解决方案在vue render渲染函数里面是通过createEl...

weixin_35348182的博客 942

vue 项目里main.js文件的render函数的形参h是什么意思

以这段代码为例子 new Vue({ router, store, render: h => h(App) }).$mount('#app') render函数的作用就是将App那个vue组件渲染成DOM节点。render函数里面的形参,可以做到这一点,所以 h这个函数 , 里面传进去一个App组件。注意: h 代表的是createElement 转载于:ht...

weixin_30411997的博客 898

vue 的 render 函数

资料: https://blog.youkuaiyun.com/sansan_7957/article/details/83014838

南北极之间 248

手把手教你学vuejs(二) vue项目怎么看怎么学

这也是我目前自己这么理解的,可能每个人看代码的过程也不一样,我这里也是拿到一个项目之后不知道如何开始,所以自己在慢慢摸索,然后记录下来,希望自己能不断超越自己。这里我不能把公司项目亮出来,所以。。。只能记个大概 1.先看配置文件package.json,里面定义了这个项目所需要的各个模块,以及项目的配置信息。scripts指定了运行脚本命令的npm命令行缩写,比如dev指定了运行npm run d...

qqhuzi36的博客 2882

【Vue】Vue render 函数

对Vue中的渲染函数render进行简要的介绍。

cannotbecounted的博客 420
上一篇: vue-router路由实现原理
下一篇: Vue项目全局和局部组件
codezha
博客等级 码龄10年 28粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值