mirror of
https://github.com/status-im/react-native.git
synced 2025-01-15 03:56:03 +00:00
Bugfix - Only add valid IOSPicker items.
Summary:
Fixes https://github.com/facebook/react-native/issues/9216.
As nickzuber describes in #9216, conditional `Picker.Item` elements will lead to exceptions downstream when the `Picker` attempts to construct the collection of items.
[In the picker source](a2fb703bbb/Libraries/Components/Picker/PickerIOS.ios.js (L48-L53)
) we can see that `child.props` is accessed when `child` has the potential to be an invalid `React` element.
```js
ReactChildren.forEach(props.children, function (child, index) {
if (child.props.value === props.selectedValue) {
selectedIndex = index;
}
items.push({value: child.props.value, label: child.props.label});
});
```
This change ensures the incoming element is valid
```diff
ReactChildren.forEach(props.children, function (child, index) {
+ if (!React.isValidElement(child)) {
+ return;
+ }
if (child.props.value === props.selectedValue) {
selectedIndex = index;
}
items.
Closes https://github.com/facebook/react-native/pull/9243
Differential Revision: D3847514
Pulled By: spicyj
fbshipit-source-id: f46fbd4b0f81de7a92e1ca3e60b5ed15a9cbbf78
This commit is contained in:
parent
2ee910a11a
commit
2e4ab9ff70
@ -45,7 +45,7 @@ var PickerIOS = React.createClass({
|
|||||||
_stateFromProps: function(props) {
|
_stateFromProps: function(props) {
|
||||||
var selectedIndex = 0;
|
var selectedIndex = 0;
|
||||||
var items = [];
|
var items = [];
|
||||||
ReactChildren.forEach(props.children, function (child, index) {
|
ReactChildren.toArray(props.children).forEach(function (child, index) {
|
||||||
if (child.props.value === props.selectedValue) {
|
if (child.props.value === props.selectedValue) {
|
||||||
selectedIndex = index;
|
selectedIndex = index;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user