为了账号安全,请及时绑定邮箱和手机立即绑定

vue 作用域插槽

vue 作用域插槽

慕桂英546537 2019-10-18 09:01:24
vm.$slots可以获取插槽节点//子组件父级别{{row}}这样在slot中created打印vm.$slots返回kzName但是改为作用域插槽后打印就是{}{{row}}
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号