Skip to content

Commit 30eb965

Browse files
committed
Only nullify empty children array
1 parent 91f529d commit 30eb965

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

packages/react-router/modules/Route.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Route extends React.Component {
1919
const { component, render, match } = props // eslint-disable-line react/prop-types
2020
let children = props.children // eslint-disable-line react/prop-types
2121

22-
if (children && !children.length) children = null
22+
if (Array.isArray(children) && !children.length) children = null
2323

2424
warning(
2525
!(component && render),

packages/react-router/modules/__tests__/Route-test.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,57 @@ describe('A <Route>', () => {
3535
expect(node.innerHTML).toNotContain(TEXT)
3636
})
3737

38+
describe('component prop', () => {
39+
const TEXT = 'Mrs. Kato'
40+
const node = document.createElement('div')
41+
const Home = () => <div>{TEXT}</div>
42+
ReactDOM.render((
43+
<MemoryRouter initialEntries={[ '/' ]}>
44+
<Route path="/" component={Home} />
45+
</MemoryRouter>
46+
), node)
47+
48+
expect(node.innerHTML).toContain(TEXT)
49+
})
50+
51+
describe('render prop', () => {
52+
const TEXT = 'Mrs. Kato'
53+
const node = document.createElement('div')
54+
ReactDOM.render((
55+
<MemoryRouter initialEntries={[ '/' ]}>
56+
<Route path="/" render={() => <div>{TEXT}</div>} />
57+
</MemoryRouter>
58+
), node)
59+
60+
expect(node.innerHTML).toContain(TEXT)
61+
})
62+
63+
describe('children function prop', () => {
64+
const TEXT = 'Mrs. Kato'
65+
const node = document.createElement('div')
66+
ReactDOM.render((
67+
<MemoryRouter initialEntries={[ '/' ]}>
68+
<Route path="/" children={() => <div>{TEXT}</div>} />
69+
</MemoryRouter>
70+
), node)
71+
72+
expect(node.innerHTML).toContain(TEXT)
73+
})
74+
75+
describe('children element prop', () => {
76+
const TEXT = 'Mrs. Kato'
77+
const node = document.createElement('div')
78+
ReactDOM.render((
79+
<MemoryRouter initialEntries={[ '/' ]}>
80+
<Route path="/">
81+
<div>{TEXT}</div>
82+
</Route>
83+
</MemoryRouter>
84+
), node)
85+
86+
expect(node.innerHTML).toContain(TEXT)
87+
})
88+
3889
it('supports preact by nulling out children prop when empty array is passed', () => {
3990
const TEXT = 'Mrs. Kato'
4091
const node = document.createElement('div')

0 commit comments

Comments
 (0)