From 7cd7591f0466bc8aca617f75f5fd2dee53712846 Mon Sep 17 00:00:00 2001 From: Krzysztof Magiera Date: Fri, 20 Nov 2015 00:47:24 -0800 Subject: [PATCH] Use requireNativeComponent in View.js. Summary: public In a previous diff I've removed a need for using View attributes in requireNativeComponent. Thanks to that we can now use requireNativeComponent in View module. In a follow up diff I'll be getting rid of ReactNativeViewAttributes. Reviewed By: sahrens Differential Revision: D2676088 fb-gh-sync-id: d5d6e50f4629bd7982b90f3496e1fd22078e96a8 --- Libraries/Components/View/View.js | 11 ++++++----- Libraries/ReactIOS/verifyPropTypes.js | 2 -- .../facebook/react/views/view/ReactViewManager.java | 6 ++++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Libraries/Components/View/View.js b/Libraries/Components/View/View.js index 3f62f027c..ff2def0af 100644 --- a/Libraries/Components/View/View.js +++ b/Libraries/Components/View/View.js @@ -20,7 +20,7 @@ var ReactNativeViewAttributes = require('ReactNativeViewAttributes'); var StyleSheetPropType = require('StyleSheetPropType'); var ViewStylePropTypes = require('ViewStylePropTypes'); -var createReactNativeComponentClass = require('createReactNativeComponentClass'); +var requireNativeComponent = require('requireNativeComponent'); var stylePropType = StyleSheetPropType(ViewStylePropTypes); @@ -316,11 +316,12 @@ var View = React.createClass({ }, }); -var RCTView = createReactNativeComponentClass({ - validAttributes: ReactNativeViewAttributes.RCTView, - uiViewClassName: 'RCTView', +var RCTView = requireNativeComponent('RCTView', View, { + nativeOnly: { + nativeBackgroundAndroid: true, + } }); -RCTView.propTypes = View.propTypes; + if (__DEV__) { var viewConfig = RCTUIManager.viewConfigs && RCTUIManager.viewConfigs.RCTView || {}; for (var prop in viewConfig.nativeProps) { diff --git a/Libraries/ReactIOS/verifyPropTypes.js b/Libraries/ReactIOS/verifyPropTypes.js index 02715c080..a7ccd210b 100644 --- a/Libraries/ReactIOS/verifyPropTypes.js +++ b/Libraries/ReactIOS/verifyPropTypes.js @@ -12,7 +12,6 @@ 'use strict'; var ReactNativeStyleAttributes = require('ReactNativeStyleAttributes'); -var View = require('View'); export type ComponentInterface = ReactClass | { name?: string; @@ -40,7 +39,6 @@ function verifyPropTypes( var nativeProps = viewConfig.NativeProps; for (var prop in nativeProps) { if (!componentInterface.propTypes[prop] && - !View.propTypes[prop] && !ReactNativeStyleAttributes[prop] && (!nativePropsToIgnore || !nativePropsToIgnore[prop])) { throw new Error( diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java index 12c691a61..ac0dfee0f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java @@ -122,6 +122,12 @@ public class ReactViewManager extends ViewGroupManager { color == null ? CSSConstants.UNDEFINED : (float) color); } + @ReactProp(name = ViewProps.COLLAPSABLE) + public void setCollapsable(ReactViewGroup view, boolean collapsable) { + // no-op: it's here only so that "collapsable" property is exported to JS. The value is actually + // handled in NativeViewHierarchyOptimizer + } + @Override public String getName() { return REACT_CLASS;