我知道vue router里面在实例化得时候需要render渲染
const app=new Vue({
el:'#app',
router,
render:h => h(App)
});
不过我看到有些人可以使用这样的写法实现:
const app=new Vue({
el:'#app',
router,
...App
});
我知道es6语法 ...可以析构对象,不过不理解为什么能够自动析构出render函数来使用,谢谢
我知道vue router里面在实例化得时候需要render渲染
const app=new Vue({
el:'#app',
router,
render:h => h(App)
});
不过我看到有些人可以使用这样的写法实现:
const app=new Vue({
el:'#app',
router,
...App
});
我知道es6语法 ...可以析构对象,不过不理解为什么能够自动析构出render函数来使用,谢谢
4 回答4.6k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
3 回答5k 阅读
2 回答2.6k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
在
.vue
文件里面,它的模板部分实际是编译成了render
函数,而export
出去的对象就是一个vue实例
,它包含render
函数用于渲染自身。vue
的渲染逻辑其实很简单,就是从根实例开始,递归调用子组件的render
函数。以
render:h => h(App)
为例,Vue根实例
的render
函数使用App
来渲染,而App
也是一个Vue实例,继续调用App
的render
,App
的render
还会继续调用它引用组件的render
...如此递归进行,到最后所有引用的组件都被渲染出来,生成了完整的DOM。理解了这个过程,我们就知道,
h(App)
的内部其实是调用了App.render()
,因此我们可以在vue根实例
中直接借用App
的render
,...App
会将App
对象展开,App
的render
函数就被展开到根实例
中,实现了同样的效果。