Skip to content

Commit

Permalink
RCTPicker (facebook#22996)
Browse files Browse the repository at this point in the history
Summary:
[iOS] [Changed] - As facebook#22990 said, move requireNativeComponent to a separate file.
I am not familiar with flow, I try to follow the https://pastebin.com/RFpdT76V example but I am not sure I have done it right.
Pull Request resolved: facebook#22996

Differential Revision: D13697082

Pulled By: cpojer

fbshipit-source-id: c0c87a8e1a7f0553da994aba230f69b496140200
  • Loading branch information
Chi-AnTai authored and facebook-github-bot committed Jan 22, 2019
1 parent 224bc99 commit 499da14
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 6 deletions.
8 changes: 2 additions & 6 deletions Libraries/Components/Picker/PickerIOS.ios.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const ReactNative = require('ReactNative');
const StyleSheet = require('StyleSheet');
const View = require('View');
const processColor = require('processColor');
const requireNativeComponent = require('requireNativeComponent');
const RCTPickerNativeComponent = require('RCTPickerNativeComponent');

import type {SyntheticEvent} from 'CoreEventTypes';
import type {ColorValue} from 'StyleSheetTypes';
Expand Down Expand Up @@ -52,10 +52,6 @@ type RCTPickerIOSType = Class<
>,
>;

const RCTPickerIOS: RCTPickerIOSType = (requireNativeComponent(
'RCTPicker',
): any);

type Label = Stringish | number;

type Props = $ReadOnly<{|
Expand Down Expand Up @@ -111,7 +107,7 @@ class PickerIOS extends React.Component<Props, State> {
render() {
return (
<View style={this.props.style}>
<RCTPickerIOS
<RCTPickerNativeComponent
ref={picker => {
this._picker = picker;
}}
Expand Down
47 changes: 47 additions & 0 deletions Libraries/Components/Picker/RCTPickerNativeComponent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';

const requireNativeComponent = require('requireNativeComponent');

import type {SyntheticEvent} from 'CoreEventTypes';
import type {TextStyleProp} from 'StyleSheet';
import type {NativeComponent} from 'ReactNative';

type PickerIOSChangeEvent = SyntheticEvent<
$ReadOnly<{|
newValue: number | string,
newIndex: number,
|}>,
>;

type RCTPickerIOSItemType = $ReadOnly<{|
label: ?Label,
value: ?(number | string),
textColor: ?number,
|}>;

type Label = Stringish | number;

type RCTPickerIOSType = Class<
NativeComponent<
$ReadOnly<{|
items: $ReadOnlyArray<RCTPickerIOSItemType>,
onChange: (event: PickerIOSChangeEvent) => void,
onResponderTerminationRequest: () => boolean,
onStartShouldSetResponder: () => boolean,
selectedIndex: number,
style?: ?TextStyleProp,
testID?: ?string,
|}>,
>,
>;

module.exports = ((requireNativeComponent('RCTPicker'): any): RCTPickerIOSType);

0 comments on commit 499da14

Please sign in to comment.