在线等,挺急的!vue 作用域插槽求老司机指点!

vm.$slots可以获取插槽节点
//子组件
父级别
{{row}}
这样在slot中created打印vm.$slots返回kzName
但是改为作用域插槽后打印就是{}
{{row}}
慕尼黑8549860
浏览 233回答 2
2回答

拉丁的传说

vm.$slots是获取静态插槽内容的属性,直接得到每个插槽相应的Vnode节点,你的第一种写法v-slot:KzName或#KzName都是用作静态插槽。静态插槽的实现是在组件初始化刚开始的时候就去拿渲染后的内容,它定义在initRender方法中,并且这个方法的初次调用先于created,所以一开始可以在created里得到有值的内容。作用域插槽的获取一定要使用vm.$scopedSlots,你后面的写法就是作用域插槽。并且在获取它的时候要在mounted里才能拿到,这是由于作用域插槽在组件初始化中要等到其他变量初始完才能正确获取变量的值,它的第一次赋值要等到组件渲染时才完成。虽然$scopedSlots的初始化也是在initRender方法里,但那时很明显只是给了它一个空对象,它的赋值是在_render方法中,所以你在渲染函数中是可以拿到的。关于这两个属性的具体实现参考一下源码中的render.js
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript