mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-11 02:30:41 +08:00
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user