normalizeArrayChildren方法内的第一个节点为什么是最里面的节点了?

来源:2-7 createElement

qq_飞越疯人院_1

2019-04-26

我是自己手写的render函数:

render(h) {
    return h('div', {
      attrs: {
        id: 'hello'
      }
    }, [
      h('span', {
        attrs: {
          id: 'world'
        }
      }, [
        h('ul', 'qwerty')
      ]),
      h('div', 'test div'),
      'www',
      'pang'
    ])
  }`
  const res = []
  let i, c, lastIndex, last
  for (i = 0; i < children.length; i++) {
    c = children[i]
	console.log(c); // 打印c
	...
	// 为什么打印的第一项是 `qwerty` 子节点最里面的文本节点了,第二项是它的父节点ul。
写回答

1回答

ustbhuangyi

2019-04-26

因为是优先执行最内层的 h('ul', 'qwerty') 方法呀,跟代码执行顺序有关。

1
4
拉拉德玛西亚
哦,懂了,我嘞个擦。
2019-08-04
共4条回复

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

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

4984 学习 · 1037 问题

查看课程