mirror of
https://github.com/vuejs/vue.git
synced 2024-11-22 04:39:46 +00:00
parent
0d7fb73925
commit
448ba65d2b
@ -1,5 +1,5 @@
|
||||
import Vue, { VNode } from "../index";
|
||||
import { AsyncComponent, ComponentOptions, FunctionalComponentOptions, Component } from "../index";
|
||||
import { ComponentOptions, Component } from "../index";
|
||||
import { CreateElement } from "../vue";
|
||||
|
||||
interface MyComponent extends Vue {
|
||||
@ -297,6 +297,10 @@ Vue.component('component-with-scoped-slot', {
|
||||
// named scoped slot as vnode data
|
||||
item: (props: ScopedSlotProps) => [h('span', [props.msg])]
|
||||
}
|
||||
}),
|
||||
h('child', {
|
||||
// Passing down all slots from parent
|
||||
scopedSlots: this.$scopedSlots
|
||||
})
|
||||
])
|
||||
},
|
||||
@ -315,13 +319,18 @@ Vue.component('component-with-scoped-slot', {
|
||||
Vue.component('narrow-array-of-vnode-type', {
|
||||
render (h): VNode {
|
||||
const slot = this.$scopedSlots.default!({})
|
||||
if (typeof slot !== 'string') {
|
||||
if (typeof slot === 'string') {
|
||||
return h('span', slot)
|
||||
} else if (Array.isArray(slot)) {
|
||||
const first = slot[0]
|
||||
if (!Array.isArray(first) && typeof first !== 'string') {
|
||||
return first;
|
||||
return first
|
||||
} else {
|
||||
return h()
|
||||
}
|
||||
} else {
|
||||
return slot
|
||||
}
|
||||
return h();
|
||||
}
|
||||
})
|
||||
|
||||
|
4
types/vnode.d.ts
vendored
4
types/vnode.d.ts
vendored
@ -1,6 +1,6 @@
|
||||
import { Vue } from "./vue";
|
||||
|
||||
export type ScopedSlot = (props: any) => VNodeChildrenArrayContents | string;
|
||||
export type ScopedSlot = (props: any) => VNodeChildrenArrayContents | VNode | string;
|
||||
|
||||
export type VNodeChildren = VNodeChildrenArrayContents | [ScopedSlot] | string;
|
||||
export interface VNodeChildrenArrayContents extends Array<VNode | string | VNodeChildrenArrayContents> {}
|
||||
@ -34,7 +34,7 @@ export interface VNodeComponentOptions {
|
||||
export interface VNodeData {
|
||||
key?: string | number;
|
||||
slot?: string;
|
||||
scopedSlots?: { [key: string]: ScopedSlot };
|
||||
scopedSlots?: { [key: string]: ScopedSlot | undefined };
|
||||
ref?: string;
|
||||
refInFor?: boolean;
|
||||
tag?: string;
|
||||
|
Loading…
Reference in New Issue
Block a user