vue的render函数

render 函数是什么

render 函数 跟 template 一样都是创建 html 模板的,但是有些场景中用 template 实现起来代码冗长繁琐而且有大量重复,这时候就可以用 render 函数。

官网示例

官网例子:子组件想要根据父组件传递的 level 值(1-6)来决定渲染标签 h 几

虚拟DOM和真实DOM

虚拟DOM不会进行排版与重绘操作 ,虚拟DOM就是把真实DOM转换为Javascript代码,并且真实DOM频繁操作排版、重绘效率相比虚拟DOM 效率会低很多。原生操作真实DOM浏览器会从构建DOM树开始从头到尾执行一遍流程。而虚拟DOM是用Object来代表一颗节点,这个Object叫做VNode,然后使用两个VNode进行对比,根据对比后的结果修改真实DOM。
浏览器渲染引擎的工作流程
在这里插入图片描述

基础案例

常用写法:template写法

<template>
	<div>
		<h1>rucmatthew</h1>
	</div>
</template>

使用render函数

<script>
	export default{
		render(createElement){
		//createElement:
        // 第一个参数是标签名类型必须是String
        // 第二个是属性值 我们后面来讲,类型是Object
        // 第三个是子级虚拟节点 (VNodes) 可以是String|Array
		return createElement{'h1',{},'rucmatthew'}
		}
	}
</script>

tag 可以分为正常html标签 | vue组件 两类,传递vue组件的方式请看

render函数传递vue组件
构造一个子组件


<template>
    <div>
        {{content}}
    </div>
</template>
 
<script>
export default {
components: {},
    props:{
        content:{
            type:String
        }
    }
}
</script>

在父组件里引入


<script>
    // 引入子组件
    import ... from ....
    export default {
        render(createElement) {
            // 传入组件
            return createElement(Widget, {
                // 传值 content
                props:{
                    content:"hello CrazyYan"
                }
            });
        },
    };
</script>

render函数的参数解析

  1. render 函数的返回值(VNode)
    VNode(即:虚拟节点),也就是我们要渲染的节点。
  2. render 函数的参数(createElement)
    createElement 是 render 函数 的参数,它本身也是个函数,并且有三个参数

render 函数即渲染函数,它是个函数,它的参数也是个函数——即 createElement,我们重点来说 createElement 参数。

  1. createElement 函数的返回值(VNode)
    createElement 函数的返回值是 VNode(即:虚拟节点)。

  2. createElement 函数的参数(三个)
    参数一: 一个 HTML 标签字符串,组件选项对象,或者解析上述任何一种的一个 async 异步函数。类型:{String | Object | Function}。必需。
    参数二: 一个包含模板相关属性的数据对象你可以在 template 中使用这些特性。类型:{Object}。可选。
    参数三: 子虚拟节点 (VNodes),由 createElement() 构建而成,也可以使用字符串来生成“文本虚拟节点”。类型:{String | Array}。可选。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值