ex for entry 7

This commit is contained in:
Cheng Lou 2013-10-29 14:55:11 -04:00
parent 9471287794
commit 7d50ab600f
1 changed files with 37 additions and 2 deletions

View File

@ -7,6 +7,41 @@ prev: style-prop-value-px.html
next: controlled-input-null-value.html
---
Usually, a component's `this.props.children` is an array of components. To save an extra array allocation, it returns the component itself when there's only one.
Usually, a component's `this.props.children` is an array of components:
This means accessing, for example, `this.props.children.length` might be misleading, as it could either be the `length` property of the array of children, or that of a single string component.
```js
/** @jsx React.DOM */
var GenericWrapper = React.createClass({
componentDidMount: function() {
console.log(Array.isArray(this.props.children)); // => true
},
render: function() {
return <div />;
}
});
React.renderComponent(
<GenericWrapper><span/><span/><span/></GenericWrapper>,
mountNode
);
```
To save an extra array allocation, it returns the component itself _without the array wrapper_ when there's only one child.
```js
/** @jsx React.DOM */
var GenericWrapper = React.createClass({
componentDidMount: function() {
// **warning**: yields 5 for length of the string 'hello', not 1 for the
// length of the non-existant array wrapper!
console.log(this.props.children.length);
},
render: function() {
return <div />;
}
});
React.renderComponent(<GenericWrapper>hello</GenericWrapper>, mountNode);
```