Summary:
[iOS] [Changed] - As #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: https://github.com/facebook/react-native/pull/22996

Differential Revision: D13697082

Pulled By: cpojer

fbshipit-source-id: c0c87a8e1a7f0553da994aba230f69b496140200
This commit is contained in:
Chi-AnTai 2019-01-22 02:10:01 -08:00 коммит произвёл Facebook Github Bot
Родитель 1af390be19
Коммит 6c18069a28
2 изменённых файлов: 49 добавлений и 6 удалений

Просмотреть файл

@ -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';
@ -52,10 +52,6 @@ type RCTPickerIOSType = Class<
>,
>;
const RCTPickerIOS: RCTPickerIOSType = (requireNativeComponent(
'RCTPicker',
): any);
type Label = Stringish | number;
type Props = $ReadOnly<{|
@ -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;
}}

Просмотреть файл

@ -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);