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

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

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

慕尼黑8549860 2019-09-19 13:59:18
vm.$slots可以获取插槽节点//子组件父级别{{row}}这样在slot中created打印vm.$slots返回kzName但是改为作用域插槽后打印就是{}{{row}}

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

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

添加回答

代码语言

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信