mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
2e4ab9ff70
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](https://github.com/facebook/react-native/blob/a2fb703bbb988038323c55b29b40e8f5ff52966d/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