Skip to content

Commit 77f0faa

Browse files
committed
docs: mention render iterables
1 parent 47e64bf commit 77f0faa

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/content/reference/react/Component.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,12 +573,14 @@ You should write the `render` method as a pure function, meaning that it should
573573
574574
#### Returns {/*render-returns*/}
575575
576-
`render` can return any valid React node. This includes React elements such as `<div />`, strings, numbers, [portals](/reference/react-dom/createPortal), empty nodes (`null`, `undefined`, `true`, and `false`), and arrays of React nodes.
576+
`render` can return any valid React node. This includes React elements such as `<div />`, strings, numbers, [portals](/reference/react-dom/createPortal), empty nodes (`null`, `undefined`, `true`, and `false`), arrays, and other [iterables](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol) of React nodes.
577577
578578
#### Caveats {/*render-caveats*/}
579579
580580
- `render` should be written as a pure function of props, state, and context. It should not have side effects.
581581
582+
- If you return an iterable from `render`, avoid one-shot iterators that can only be enumerated once. React may enumerate the returned value more than once, so prefer arrays or iterable objects that create a fresh iterator each time.
583+
582584
- `render` will not get called if [`shouldComponentUpdate`](#shouldcomponentupdate) is defined and returns `false`.
583585
584586
- When [Strict Mode](/reference/react/StrictMode) is on, React will call `render` twice in development and then throw away one of the results. This helps you notice the accidental side effects that need to be moved out of the `render` method.

0 commit comments

Comments
 (0)