mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Improve Flow Type for ScrollResponder
Summary: FlatList and VirtualizedList were typing this value as any instead of using the actual type from ScrollView. I started with that change and then fixed the type to solve the other callsites in the codebase. Reviewed By: zackargyle Differential Revision: D17089934 fbshipit-source-id: bfc22cec9993904d779cad37b1de7cb3c0484d2c
This commit is contained in:
@@ -64,7 +64,21 @@ if (Platform.OS === 'android') {
|
||||
}
|
||||
|
||||
export type ScrollResponderType = {
|
||||
...ScrollView,
|
||||
// We'd like to do ...ScrollView here, however Flow doesn't seem
|
||||
// to see the imperative methods of ScrollView that way. Workaround the
|
||||
// issue by specifying them manually.
|
||||
getScrollableNode: $PropertyType<ScrollView, 'getScrollableNode'>,
|
||||
getInnerViewNode: $PropertyType<ScrollView, 'getInnerViewNode'>,
|
||||
getNativeScrollRef: $PropertyType<ScrollView, 'getNativeScrollRef'>,
|
||||
|
||||
setNativeProps: $PropertyType<ScrollView, 'setNativeProps'>,
|
||||
scrollTo: $PropertyType<ScrollView, 'scrollTo'>,
|
||||
scrollWithoutAnimationTo: $PropertyType<
|
||||
ScrollView,
|
||||
'scrollWithoutAnimationTo',
|
||||
>,
|
||||
flashScrollIndicators: $PropertyType<ScrollView, 'flashScrollIndicators'>,
|
||||
|
||||
...typeof ScrollResponder.Mixin,
|
||||
};
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ const StyleSheet = require('../StyleSheet/StyleSheet');
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
||||
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
|
||||
import type {
|
||||
ViewabilityConfig,
|
||||
@@ -441,7 +442,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
/**
|
||||
* Provides a handle to the underlying scroll responder.
|
||||
*/
|
||||
getScrollResponder(): any {
|
||||
getScrollResponder(): ?ScrollResponderType {
|
||||
if (this._listRef) {
|
||||
return this._listRef.getScrollResponder();
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ const React = require('react');
|
||||
const ScrollView = require('../Components/ScrollView/ScrollView');
|
||||
const VirtualizedSectionList = require('./VirtualizedSectionList');
|
||||
|
||||
import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
||||
import type {ViewToken} from './ViewabilityHelper';
|
||||
import type {
|
||||
SectionBase as _SectionBase,
|
||||
@@ -275,7 +276,7 @@ class SectionList<SectionT: SectionBase<any>> extends React.PureComponent<
|
||||
/**
|
||||
* Provides a handle to the underlying scroll responder.
|
||||
*/
|
||||
getScrollResponder(): ?ScrollView {
|
||||
getScrollResponder(): ?ScrollResponderType {
|
||||
const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();
|
||||
if (listRef) {
|
||||
return listRef.getScrollResponder();
|
||||
|
||||
@@ -27,6 +27,7 @@ const warning = require('fbjs/lib/warning');
|
||||
|
||||
const {computeWindowedRenderLimits} = require('./VirtualizeUtils');
|
||||
|
||||
import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
||||
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
|
||||
import type {
|
||||
ViewabilityConfig,
|
||||
@@ -431,7 +432,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
* Note that `this._scrollRef` might not be a `ScrollView`, so we
|
||||
* need to check that it responds to `getScrollResponder` before calling it.
|
||||
*/
|
||||
getScrollResponder(): any {
|
||||
getScrollResponder(): ?ScrollResponderType {
|
||||
if (this._scrollRef && this._scrollRef.getScrollResponder) {
|
||||
return this._scrollRef.getScrollResponder();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user