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-13 21:38:57 +01:00
committed by Lorenzo Sciandra
parent 7334025627
commit a535cc9c06
2 changed files with 33 additions and 9 deletions
+8 -9
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);
@@ -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;