Fix Breadcrumb falsy children, close #5015

This commit is contained in:
afc163 2017-02-23 13:43:50 +08:00
parent 5068343b0c
commit 9c6a6d6175
3 changed files with 22 additions and 4 deletions

View File

@ -88,8 +88,11 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
}); });
} else if (children) { } else if (children) {
crumbs = React.Children.map(children, (element: any, index) => { crumbs = React.Children.map(children, (element: any, index) => {
if (!element) {
return element;
}
warning( warning(
element && element.type.__ANT_BREADCRUMB_ITEM, element.type && element.type.__ANT_BREADCRUMB_ITEM,
'Breadcrumb only accetps Breadcrumb.Item as it\'s children' 'Breadcrumb only accetps Breadcrumb.Item as it\'s children'
); );
return cloneElement(element, { return cloneElement(element, {

View File

@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { mount } from 'enzyme'; import { mount, render } from 'enzyme';
import Breadcrumb from '../Breadcrumb'; import { renderToJson } from 'enzyme-to-json';
import Breadcrumb from '../index';
describe('Breadcrumb', () => { describe('Breadcrumb', () => {
it('warns on non-Breadcrumb.Item children', () => { it('warns on non-Breadcrumb.Item children', () => {
@ -18,4 +19,18 @@ describe('Breadcrumb', () => {
'Breadcrumb only accetps Breadcrumb.Item as it\'s children' '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(
<Breadcrumb>
{null}
<Breadcrumb.Item>Home</Breadcrumb.Item>
{undefined}
</Breadcrumb>
);
// eslint-disable-next-line
expect(console.error.calls).toBe(undefined);
expect(renderToJson(wrapper)).toMatchSnapshot();
});
}); });

View File

@ -1,6 +1,6 @@
--- ---
order: 0 order: 0
title: title:
zh-CN: 基本 zh-CN: 基本
en-US: Basic Usage en-US: Basic Usage
--- ---