函数式挂载组件同teleport一起有点疑问

来源:8-7 Message 组件改进为函数调用形式

ForCoke

2022-05-06

图片描述
老师,请问一下:
1、我们通过createApp方式创建Message实例,这个过程中Message组件中的各类定义,包括它的setup生命周期都会按照我们定义的执行吗?就是执行setup,执行onBeforeMount然后停止,等待我们手动将其挂载后才执行onMounted?
2、如果执行了我们在setup中的定义,那么确实会创建一个id为message的节点,同时组件因为teleport也很挂载到message节点上,那么我们createMessage中又创建了一个div节点,同时又把组件实例挂载到该div节点上,那么这个message究竟是挂载到哪一个节点上的啊?
3、如果确定了该组件只能通过函数调用的这种方式执行,那么teleport以及useDomCreate这些应该就可以直接直接去除了,而如果还希望能够通过组件标签的方式使用,是不是还应该保留着?

写回答

1回答

张轩

2022-05-07

同学你好

1 我们的整个应用就是使用 createApp 创建的,所以你可以对比整个应用进行理解。 Message 就是它的一个根组件,还是和原来的生命周期一致的。

2 可以看一下截图,就很清楚了,createMessage 创建的节点是 testing,它里面是空的,(有 teleport 的注释),然后直接 teleport 到 message 节点去了。

//img.mukewang.com/szimg/6275d2c7091fa56b13400204.jpg

3 根据上面的分析,所以不能删除。

 


0
1
ForCoke
非常感谢!
2022-05-07
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程