为什么 vm._c 和 vm.$createElement 需要不同的normalize

来源:2-8 update

慕工程2451917

2020-11-05

特别是普通的normalize , 为啥需要递归处理,children。
我用了 vue-template-complier 编译出来的 _c感觉和用自己 render方法中的createElement 差不多啊。

写回答

1回答

ustbhuangyi

2020-11-05

首先 vm._c 是模板编译后执行渲染函数的时候会调用的,而 vm.$createElement 是用户手写渲染函数的时候调用的。
因为后者是手写的,所以情况就很复杂,需要 normalize,可以重点看这个注释:

//img1.sycdn.imooc.com/szimg/5fa406ba09dfe10d21860970.jpg
注释就说明了需要 normalize 的原因。

0
1
慕工程2451917
好的,谢谢老师
2020-11-05
共1条回复

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

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

4984 学习 · 1037 问题

查看课程