Vue.js 将子节点添加到现有vnode

Vue.js 将子节点添加到现有vnode,vue.js,vuejs2,Vue.js,Vuejs2,关于渲染函数的一个问题-我正在编写一个需要构建树状结构的渲染函数 也就是说,我的数据结构如下所示: { "items": [ { "id": "1", "children": [ { "id": "11", "parentId": "1", "children": [ { "id": "111", "par

关于渲染函数的一个问题-我正在编写一个需要构建树状结构的渲染函数

也就是说,我的数据结构如下所示:

{
  "items": [
    {
      "id": "1",
      "children": [
        {
          "id": "11",
          "parentId": "1",
          "children": [
            {
              "id": "111",
              "parentId": "11",
            }
          ]
        },
        {
          "id": "12",
          "parentId": "1",
        }
      ]
    },
    {
      "id": "2",
    }
  ]
}
const myMenu = createElement('menu', {}, [])
const myMenuItem1 = createElement('menu-item', {}, []);
我需要在屏幕上显示的是一个结构,它可以有效地显示这个(示例中的id),但是带有组件

1
|--11
    |--111
|--12
2
createElement()接受子节点数组作为第三个参数。我正在努力解决的是如何在创建父组件后将子组件添加到节点中

例如,如果我创建如下顶级菜单组件:

{
  "items": [
    {
      "id": "1",
      "children": [
        {
          "id": "11",
          "parentId": "1",
          "children": [
            {
              "id": "111",
              "parentId": "11",
            }
          ]
        },
        {
          "id": "12",
          "parentId": "1",
        }
      ]
    },
    {
      "id": "2",
    }
  ]
}
const myMenu = createElement('menu', {}, [])
const myMenuItem1 = createElement('menu-item', {}, []);
然后创建一个项目进入该菜单,如下所示:

{
  "items": [
    {
      "id": "1",
      "children": [
        {
          "id": "11",
          "parentId": "1",
          "children": [
            {
              "id": "111",
              "parentId": "11",
            }
          ]
        },
        {
          "id": "12",
          "parentId": "1",
        }
      ]
    },
    {
      "id": "2",
    }
  ]
}
const myMenu = createElement('menu', {}, [])
const myMenuItem1 = createElement('menu-item', {}, []);
然后如何将myMenuItem1添加到myMenu


我认为这可能是myMenu.children,但尽管在创建myMenu元素时传递了一个空数组作为子元素,但children属性未定义。我遗漏了什么?

我想你一定是在实验中犯了错误。我已经对此进行了测试,
vnode.children
在这种情况下是一个空数组。这意味着您可以根据需要将其他VNode推入:

render(createElement) {
    const VNode1 = createElement('div', {}, [])
    const VNode2 = createElement('h1', {}, 'This is headline')

    VNode1.children.push(VNode2)

    return VNode1
  }

这太奇怪了,我会再试一次,谢谢你看。当然,让我知道进展如何;-)