Picker (android): Convert children to an array before accessing with a position
Summary: When using the following component, `this.props.children` is not a flat array. ``` js class Example extends Component { // ... render() { const values = ['1', '2']; return ( <Picker value={this.state.value} onValueChange={this.onValueChange.bind(this)} > <Picker.Item label="n/a" value={null} /> {values.map(value => { return ( <Picker.Item label={value} value={value} /> ); })} </Picker> ); } } ``` The resulting `this.props.children` is: ``` js [ (child), [ (child), (child), ], ]; ``` Therefor you can't use `this.props.children[2]` to get the last item. The Android version of the [Picker](https://facebook.github.io/react-native/do Closes https://github.com/facebook/react-native/pull/8153 Differential Revision: D4753480 Pulled By: javache fbshipit-source-id: deb0264746b39303e66c69c191af0c962db39085
This commit is contained in:
parent
8a8f34ae10
commit
720e19525e
|
@ -116,7 +116,8 @@ class PickerAndroid extends React.Component {
|
|||
if (this.props.onValueChange) {
|
||||
var position = event.nativeEvent.position;
|
||||
if (position >= 0) {
|
||||
var value = this.props.children[position].props.value;
|
||||
var children = React.Children.toArray(this.props.children);
|
||||
var value = children[position].props.value;
|
||||
this.props.onValueChange(value, position);
|
||||
} else {
|
||||
this.props.onValueChange(null, position);
|
||||
|
|
Loading…
Reference in New Issue