diff --git a/components/breadcrumb/Breadcrumb.jsx b/components/breadcrumb/Breadcrumb.jsx
index ce4ada19f..8b120a2ba 100644
--- a/components/breadcrumb/Breadcrumb.jsx
+++ b/components/breadcrumb/Breadcrumb.jsx
@@ -1,6 +1,6 @@
-import { inject, cloneVNode } from 'vue';
+import { inject, cloneVNode, createVNode } from 'vue';
import PropTypes from '../_util/vue-types';
-import { filterEmpty, getComponent, getSlotOptions, getSlot } from '../_util/props-util';
+import { filterEmpty, getComponent, getSlot } from '../_util/props-util';
import warning from '../_util/warning';
import { ConfigConsumerProps } from '../config-provider';
import BreadcrumbItem from './BreadcrumbItem';
@@ -83,7 +83,7 @@ export default {
params,
routes,
paths: this.addChildPath(paths, child.path, params),
- h: this.$createElement,
+ h: createVNode,
})}
))}
@@ -97,7 +97,7 @@ export default {
separator={separator}
key={route.breadcrumbName || path}
>
- {itemRender({ route, params, routes, paths, h: this.$createElement })}
+ {itemRender({ route, params, routes, paths, h: createVNode })}
);
});
@@ -123,8 +123,8 @@ export default {
} else if (children.length) {
crumbs = children.map((element, index) => {
warning(
- getSlotOptions(element).__ANT_BREADCRUMB_ITEM ||
- getSlotOptions(element).__ANT_BREADCRUMB_SEPARATOR,
+ typeof element.type === 'object' &&
+ (element.type.__ANT_BREADCRUMB_ITEM || element.type.__ANT_BREADCRUMB_SEPARATOR),
'Breadcrumb',
"Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children",
);
diff --git a/components/breadcrumb/BreadcrumbItem.jsx b/components/breadcrumb/BreadcrumbItem.jsx
index 7e9887beb..4795784b1 100644
--- a/components/breadcrumb/BreadcrumbItem.jsx
+++ b/components/breadcrumb/BreadcrumbItem.jsx
@@ -1,6 +1,6 @@
import { inject } from 'vue';
import PropTypes from '../_util/vue-types';
-import { hasProp, getComponent } from '../_util/props-util';
+import { hasProp, getComponent, getSlot } from '../_util/props-util';
import { ConfigConsumerProps } from '../config-provider';
import DropDown from '../dropdown/dropdown';
import DownOutlined from '@ant-design/icons-vue/DownOutlined';
@@ -40,11 +40,11 @@ export default {
},
},
render() {
- const { prefixCls: customizePrefixCls, $slots } = this;
+ const { prefixCls: customizePrefixCls } = this;
const getPrefixCls = this.configProvider.getPrefixCls;
const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
const separator = getComponent(this, 'separator');
- const children = $slots.default && $slots.default();
+ const children = getSlot(this);
let link;
if (hasProp(this, 'href')) {
link = {children};
diff --git a/components/breadcrumb/BreadcrumbSeparator.jsx b/components/breadcrumb/BreadcrumbSeparator.jsx
index 681a7f5e0..a0ac764d1 100644
--- a/components/breadcrumb/BreadcrumbSeparator.jsx
+++ b/components/breadcrumb/BreadcrumbSeparator.jsx
@@ -1,6 +1,7 @@
import { inject } from 'vue';
import { ConfigConsumerProps } from '../config-provider';
import PropTypes from '../_util/vue-types';
+import { getSlot } from '../_util/props-util';
export default {
name: 'ABreadcrumbSeparator',
@@ -14,11 +15,11 @@ export default {
};
},
render() {
- const { prefixCls: customizePrefixCls, $slots } = this;
+ const { prefixCls: customizePrefixCls } = this;
const getPrefixCls = this.configProvider.getPrefixCls;
const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
- const children = $slots.default && $slots.default();
+ const children = getSlot(this);
return {children || '/'};
},
};