From e848b0036da0644d2fb1202b51c05df389fa0364 Mon Sep 17 00:00:00 2001 From: Oleksandr Melnykov Date: Tue, 14 Jan 2020 03:54:38 -0800 Subject: [PATCH] Use commands instead of setNativeProps for PickerAndroid Summary: Fabric doesn't support setNativeProps, so we are using view commands instead. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D18044169 fbshipit-source-id: d5f199b930244d02f174ea8a7ef732e9a8ef2476 --- .../Picker/PickerAndroid.android.js | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Libraries/Components/Picker/PickerAndroid.android.js b/Libraries/Components/Picker/PickerAndroid.android.js index 4fddefb8014..6788aefd06f 100644 --- a/Libraries/Components/Picker/PickerAndroid.android.js +++ b/Libraries/Components/Picker/PickerAndroid.android.js @@ -10,8 +10,12 @@ 'use strict'; -import AndroidDropdownPickerNativeComponent from './AndroidDropdownPickerNativeComponent'; -import AndroidDialogPickerNativeComponent from './AndroidDialogPickerNativeComponent'; +import AndroidDropdownPickerNativeComponent, { + Commands as AndroidDropdownPickerCommands, +} from './AndroidDropdownPickerNativeComponent'; +import AndroidDialogPickerNativeComponent, { + Commands as AndroidDialogPickerCommands, +} from './AndroidDialogPickerNativeComponent'; import * as React from 'react'; import StyleSheet from '../../StyleSheet/StyleSheet'; import processColor from '../../StyleSheet/processColor'; @@ -83,13 +87,22 @@ function PickerAndroid(props: Props): React.Node { onValueChange(null, position); } } - const {current} = pickerRef; if (current != null && position !== selected) { - current.setNativeProps({selected}); + const Commands = + props.mode === 'dropdown' + ? AndroidDropdownPickerCommands + : AndroidDialogPickerCommands; + Commands.setNativeSelectedPosition(current, selected); } }, - [props.children, props.onValueChange, props.selectedValue, selected], + [ + props.children, + props.onValueChange, + props.selectedValue, + props.mode, + selected, + ], ); const rootProps = {