diff --git a/components/breadcrumb/Breadcrumb.tsx b/components/breadcrumb/Breadcrumb.tsx index e19e72feca..f21bea5319 100755 --- a/components/breadcrumb/Breadcrumb.tsx +++ b/components/breadcrumb/Breadcrumb.tsx @@ -88,8 +88,11 @@ export default class Breadcrumb extends React.Component { }); } else if (children) { crumbs = React.Children.map(children, (element: any, index) => { + if (!element) { + return element; + } warning( - element && element.type.__ANT_BREADCRUMB_ITEM, + element.type && element.type.__ANT_BREADCRUMB_ITEM, 'Breadcrumb only accetps Breadcrumb.Item as it\'s children' ); return cloneElement(element, { diff --git a/components/breadcrumb/__tests__/Breadcrumb.test.js b/components/breadcrumb/__tests__/Breadcrumb.test.js index 8c6158262b..8ff20f76f4 100644 --- a/components/breadcrumb/__tests__/Breadcrumb.test.js +++ b/components/breadcrumb/__tests__/Breadcrumb.test.js @@ -1,6 +1,7 @@ import React from 'react'; -import { mount } from 'enzyme'; -import Breadcrumb from '../Breadcrumb'; +import { mount, render } from 'enzyme'; +import { renderToJson } from 'enzyme-to-json'; +import Breadcrumb from '../index'; describe('Breadcrumb', () => { it('warns on non-Breadcrumb.Item children', () => { @@ -18,4 +19,18 @@ describe('Breadcrumb', () => { 'Breadcrumb only accetps Breadcrumb.Item as it\'s children' ); }); + + // https://github.com/ant-design/ant-design/issues/5015 + it('should allow Breadcrumb.Item is null or undefined', () => { + const wrapper = render( + + {null} + Home + {undefined} + + ); + // eslint-disable-next-line + expect(console.error.calls).toBe(undefined); + expect(renderToJson(wrapper)).toMatchSnapshot(); + }); }); diff --git a/components/breadcrumb/demo/basic.md b/components/breadcrumb/demo/basic.md index 1d5f8bb08e..e3995d0acc 100644 --- a/components/breadcrumb/demo/basic.md +++ b/components/breadcrumb/demo/basic.md @@ -1,6 +1,6 @@ --- order: 0 -title: +title: zh-CN: 基本 en-US: Basic Usage ---