Move View native require call to new file

Summary: Moving out the requireNativeComponent call into a new file. We want this long term for all of our view managers to support codegen of the native side and so we can move the viewConfigs into JS.

Reviewed By: yungsters

Differential Revision: D9231619

fbshipit-source-id: 7c89587cc6a76e92b309c4941577291e56af8c7c
This commit is contained in:
Eli White 2018-08-08 18:34:26 -07:00 committed by Facebook Github Bot
parent 610412385b
commit 370e0db970
2 changed files with 33 additions and 9 deletions

View File

@ -12,11 +12,10 @@
const React = require('React');
const TextAncestor = require('TextAncestor');
const ViewNativeComponent = require('ViewNativeComponent');
const invariant = require('fbjs/lib/invariant');
const requireNativeComponent = require('requireNativeComponent');
import type {NativeComponent} from 'ReactNative';
import type {ViewProps} from 'ViewPropTypes';
export type Props = ViewProps;
@ -28,11 +27,13 @@ export type Props = ViewProps;
*
* @see http://facebook.github.io/react-native/docs/view.html
*/
const RCTView = requireNativeComponent('RCTView');
let ViewToExport = RCTView;
let ViewToExport = ViewNativeComponent;
if (__DEV__) {
const View = (props: Props, forwardedRef: ?React.Ref<'RCTView'>) => {
const View = (
props: Props,
forwardedRef: React.Ref<typeof ViewNativeComponent>,
) => {
return (
<TextAncestor.Consumer>
{hasTextAncestor => {
@ -40,7 +41,7 @@ if (__DEV__) {
!hasTextAncestor,
'Nesting of <View> within <Text> is not currently supported.',
);
return <RCTView {...props} ref={forwardedRef} />;
return <ViewNativeComponent {...props} ref={forwardedRef} />;
}}
</TextAncestor.Consumer>
);
@ -49,6 +50,4 @@ if (__DEV__) {
ViewToExport = React.forwardRef(View);
}
module.exports = ((ViewToExport: $FlowFixMe): Class<
NativeComponent<ViewProps>,
>);
module.exports = ((ViewToExport: $FlowFixMe): typeof ViewNativeComponent);

View File

@ -0,0 +1,25 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const ReactNative = require('ReactNative');
const requireNativeComponent = require('requireNativeComponent');
import type {ViewProps} from 'ViewPropTypes';
type ViewNativeComponentType = Class<ReactNative.NativeComponent<ViewProps>>;
const ViewNativeComponent = ((requireNativeComponent(
'RCTView',
): any): ViewNativeComponentType);
module.exports = ViewNativeComponent;