Javascript 为什么Vue常规插槽也可以在这个.scopedSlots中使用?
请看这个最小的例子 Test.vueJavascript 为什么Vue常规插槽也可以在这个.scopedSlots中使用?,javascript,vue.js,vuejs2,vue-component,vuejs3,Javascript,Vue.js,Vuejs2,Vue Component,Vuejs3,请看这个最小的例子 Test.vue 从“Vue”导入Vue; 导出默认Vue.extend({ 安装的(){ log(Object.keys(this.$scopedSlots)); } }); App.vue 但它显示在这里。$scopedSlots 从“/Test.vue”导入测试; 导出默认值{ 组成部分:{ 试验 } }; 在上面的示例中,此控制台将注销[“此\u不是\u范围的\u插槽”] 为什么会这样 Vue实例中有两个属性 this.$slots this.$scopedS
从“Vue”导入Vue;
导出默认Vue.extend({
安装的(){
log(Object.keys(this.$scopedSlots));
}
});
App.vue
但它显示在这里。$scopedSlots
从“/Test.vue”导入测试;
导出默认值{
组成部分:{
试验
}
};
在上面的示例中,此控制台将注销[“此\u不是\u范围的\u插槽”]
为什么会这样
Vue实例中有两个属性
this.$slots
this.$scopedSlots
v-slot:my_scope_name=“{someValue}”
,则my_scope_name
不会显示在中。$slots
中。$scopedSlots
this.$scopedSlots
来检测这些内容?根据:
$slot
现在也作为函数公开在$scopedSlots
上。如果使用渲染函数,现在建议始终通过$scopedSlots
访问插槽,无论它们当前是否使用范围。这不仅会使将来的重构更加简单,从而添加一个作用域,还可以简化最终迁移到Vue 3的过程,在Vue 3中,所有插槽都是函数我相信新的插槽语法是以这种方式实现的,以便更轻松地迁移到Vue 3。看见