118
it('finds the first child when a component returns a fragment', () => {
119
class Fragment extends React.Component {
120
render() {
121
- return [<div />, <span />];
121
+ return [<div key="a" />, <span key="b" />];
122
}
123
}
124
141
142
class Fragment extends React.Component {
143
render() {
144
- return [<Wrapper><div /></Wrapper>, <span />];
144
+ return [<Wrapper key="a"><div /></Wrapper>, <span key="b" />];
145
}
146
}
147
164
165
class Fragment extends React.Component {
166
render() {
167
- return [<NullComponent />, <div />, <span />];
167
+ return [<NullComponent key="a" />, <div key="b" />, <span key="c" />];
168
}
169
}
170
263
render() {
264
const {step} = this.props;
265
return [
266
- <Child name={`normal[0]:${step}`} />,
266
+ <Child key="a" name={`normal[0]:${step}`} />,
267
ReactDOM.unstable_createPortal(
268
- <Child name={`portal1[0]:${step}`} />,
268
+ <Child key="b" name={`portal1[0]:${step}`} />,
269
portalContainer1,
270
),
271
- <Child name={`normal[1]:${step}`} />,
271
+ <Child key="c" name={`normal[1]:${step}`} />,
272
ReactDOM.unstable_createPortal(
273
[
274
- <Child name={`portal2[0]:${step}`} />,
275
- <Child name={`portal2[1]:${step}`} />,
274
+ <Child key="d" name={`portal2[0]:${step}`} />,
275
+ <Child key="e" name={`portal2[1]:${step}`} />,
276
],
277
portalContainer2,
278
),
337
338
ReactDOM.render(
339
[
340
- <div>normal[0]</div>,
340
+ <div key="a">normal[0]</div>,
341
ReactDOM.unstable_createPortal(
342
[
343
- <div>portal1[0]</div>,
343
+ <div key="b">portal1[0]</div>,
344
ReactDOM.unstable_createPortal(
345
- <div>portal2[0]</div>,
345
+ <div key="c">portal2[0]</div>,
346
portalContainer2,
347
),
348
ReactDOM.unstable_createPortal(
349
- <div>portal3[0]</div>,
349
+ <div key="d">portal3[0]</div>,
350
portalContainer3,
351
),
352
- <div>portal1[1]</div>,
352
+ <div key="e">portal1[1]</div>,
353
],
354
portalContainer1,
355
),
356
- <div>normal[1]</div>,
356
+ <div key="f">normal[1]</div>,
357
],
358
container,
359
);
943
}
944
945
let inst;
946
- ReactDOM.render([<Example ref={n => inst = n} />], container);
946
+ ReactDOM.render([<Example key="a" ref={n => inst = n} />], container);
947
const node = container.firstChild;
948
expect(node.tagName).toEqual('DIV');
949
981
// click handler during render to simulate a click during an aborted
982
// render. I use this hack because at current time we don't have a way to
983
// test aborted ReactDOM renders.
984
- ReactDOM.render([<Example forceA={true} />, <Click />], container);
984
+ ReactDOM.render(
985
+ [<Example key="a" forceA={true} />, <Click key="b" />],
986
+ container,
987
+ );
988
989
// Because the new click handler has not yet committed, we should still
990
// invoke B.
1033
expect(() => ReactDOM.render(false, container)).toThrow(message, container);
1034
expect(() => ReactDOM.render('Hi', container)).toThrow(message, container);
1035
expect(() => ReactDOM.render(999, container)).toThrow(message, container);
1033
- expect(() => ReactDOM.render([<div />], container)).toThrow(
1036
+ expect(() => ReactDOM.render([<div key="a" />], container)).toThrow(
1037
message,
1038
container,
1039
);
1051
/You may have returned undefined/,
1052
);
1053
expect(() =>
1051
- ReactDOM.render(<Render>[<div />]</Render>, container)).toThrow(
1054
+ ReactDOM.render(<Render>[<div key="a" />]</Render>, container)).toThrow(
1055
/You may have returned undefined/,
1056
);
1057
});