vm.$options.render = createEmptyVNode有啥意义了?

来源:2-3 Vue 实例挂载的实现

qq_飞越疯人院_1

2019-04-23

runtime-only版本的lifecycle.js

if (!vm.$options.render) { 
    vm.$options.render = createEmptyVNode 
    // 为什么要有这一句创建一个空的vnode节点赋值给render属性了,整个js文件都没使用到vm.$options.render了?
    ...
}
写回答

1回答

ustbhuangyi

2019-04-24

正常情况下,运行到这里 vm.$options.render 函数都不为空,你可以手写 render 函数,或者是写 .vue 文件 template 的形式,都会转换成 render 函数。所以如果这里 vm.$options.render 为空,那么就是没有 render 函数,所以 Vue 这里给你指向一个创建空的 Vnode 的方法,确保后续运行不报错,但同时在开发者环境下给你报警告:

//img.mukewang.com/szimg/5cbfbc750001be2519400882.jpg

0
1
qq_飞越疯人院_1
非常感谢!
2019-04-27
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程