Perf improvements to RecyclerViewBackedScrollView.

Differential Revision: D2641500

fb-gh-sync-id: 7ec6e2863bccebc98f75f586c0f17d509808d46b
This commit is contained in:
Krzysztof Magiera
2015-11-11 01:19:03 -08:00
committed by facebook-github-bot-8
parent 14b36b472e
commit 5695ebdcf4
3 changed files with 101 additions and 40 deletions

View File

@@ -9,6 +9,8 @@ var NativeMethodsMixin = require('NativeMethodsMixin');
var React = require('React');
var ScrollResponder = require('ScrollResponder');
var ScrollView = require('ScrollView');
var View = require('View');
var StyleSheet = require('StyleSheet');
var requireNativeComponent = require('requireNativeComponent');
@@ -65,10 +67,6 @@ var RecyclerViewBackedScrollView = React.createClass({
return this;
},
getInnerViewNode: function(): any {
return React.findNodeHandle(this.refs[INNERVIEW]);
},
setNativeProps: function(props: Object) {
this.refs[INNERVIEW].setNativeProps(props);
},
@@ -93,11 +91,35 @@ var RecyclerViewBackedScrollView = React.createClass({
style: ([{flex: 1}, this.props.style]: ?Array<any>),
ref: INNERVIEW,
};
var wrappedChildren = React.Children.map(this.props.children, (child) => {
if (!child) {
return null;
}
return (
<View
collapsable={false}
style={styles.absolute}>
{child}
</View>
);
});
return (
<NativeAndroidRecyclerView {...props}/>
<NativeAndroidRecyclerView {...props}>
{wrappedChildren}
</NativeAndroidRecyclerView>
);
},
});
var styles = StyleSheet.create({
absolute: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
},
});
var NativeAndroidRecyclerView = requireNativeComponent('AndroidRecyclerViewBackedScrollView', null);