¿Es posible volver a convertir una instancia de componente vivo en una plantilla?
Actualmente, estoy trabajando en un sitio web de creación de formularios con element-ui y Vue.js. He terminado el componente <preview /> . Presentará el resultado de la edición al usuario, y ahora necesito exportar el formulario de resultados completo como una plantilla de Vue.js.
Dado que el formulario resultante simplemente se compone de un montón de componentes de entrada de formulario element-ui , como <el-input> , <el-button> , podría ser posible volver a convertir este componente en plantilla. Pero pronto me di cuenta de que no es tan simple como pensaba. Intenté hacer esto atravesando el árbol virtual dom pero terminé descubriendo que Vue.js no ofrece una API pública para atravesar vnodes. Hay un atributo de instancia llamado $vnode , pero es el nodo de marcador de posición para el componente en el árbol de representación principal , según el comentario del código. Además, su propiedad children no está undefined . Esto significa que no puedo acceder a los children vnodes , por lo que se vuelve imposible atravesar el árbol DOM virtual.
Otra forma es usar la propiedad privada _vnode , aunque es una forma factible, pero la propiedad es privada y prefiero no tocarla a menos que no tenga otra forma.
Otro problema del que me di cuenta más tarde es que el árbol vdom no guarda la información sobre v-if . Una vez que la rama true actual está en el árbol DOM virtual, no puedo obtener otras etiquetas falsas/invisibles del árbol vdom.
Por lo tanto, parece que atravesar el árbol DOM no puede convertir una instancia nuevamente en una plantilla (o tal vez me equivoque). ¿Hay alguna otra manera que pueda lograr mi objetivo?