Back out "Migrate TouchableNativeFeedback to use codegenNativeCommands"

Summary:
Reverting D16909622 and D16909622 due to T53098065. This change made TouchableNativeFeedback a bit less resilient to non native components being passed as the child. We probably need to handle this migration a little bit safer.

Original commit changeset: 902528623742

Differential Revision: D17096765

fbshipit-source-id: e3fc1a21504459b6d7ea5442c4bc926bbd77379d
This commit is contained in:
Eli White 2019-08-28 12:39:33 -07:00 коммит произвёл Facebook Github Bot
Родитель ed9ecb5d73
Коммит c526b3ff14
2 изменённых файлов: 12 добавлений и 29 удалений

Просмотреть файл

@ -13,10 +13,11 @@
const Platform = require('../../Utilities/Platform');
const PropTypes = require('prop-types');
const React = require('react');
const ReactNative = require('../../Renderer/shims/ReactNative');
const Touchable = require('./Touchable');
const TouchableWithoutFeedback = require('./TouchableWithoutFeedback');
const UIManager = require('../../ReactNative/UIManager');
const View = require('../View/View');
const {Commands: ViewCommands} = require('../View/ViewNativeComponent');
const createReactClass = require('create-react-class');
const ensurePositiveDelayProps = require('./ensurePositiveDelayProps');
@ -261,16 +262,20 @@ const TouchableNativeFeedback = createReactClass({
);
},
_handleRef: function(ref) {
this._viewRef = ref;
},
_dispatchHotspotUpdate: function(destX, destY) {
ViewCommands.hotspotUpdate(this._viewRef, destX || 0, destY || 0);
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(this),
UIManager.getViewManagerConfig('RCTView').Commands.hotspotUpdate,
[destX || 0, destY || 0],
);
},
_dispatchPressedStateChange: function(pressed) {
ViewCommands.setPressed(this._viewRef, pressed);
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(this),
UIManager.getViewManagerConfig('RCTView').Commands.setPressed,
[pressed],
);
},
render: function() {
@ -313,7 +318,6 @@ const TouchableNativeFeedback = createReactClass({
accessibilityActions: this.props.accessibilityActions,
onAccessibilityAction: this.props.onAccessibilityAction,
children,
ref: this._handleRef,
testID: this.props.testID,
onLayout: this.props.onLayout,
hitSlop: this.props.hitSlop,

Просмотреть файл

@ -10,17 +10,13 @@
'use strict';
const React = require('react');
const Platform = require('../../Utilities/Platform');
const ReactNative = require('../../Renderer/shims/ReactNative');
const ReactNativeViewViewConfigAndroid = require('./ReactNativeViewViewConfigAndroid');
const registerGeneratedViewConfig = require('../../Utilities/registerGeneratedViewConfig');
const requireNativeComponent = require('../../ReactNative/requireNativeComponent');
const codegenNativeCommands = require('../../Utilities/codegenNativeCommands')
.default;
import type {Int32} from '../../Types/CodegenTypes';
import type {ViewProps} from './ViewPropTypes';
export type ViewNativeComponentType = Class<
@ -70,22 +66,5 @@ if (__DEV__) {
NativeViewComponent = requireNativeComponent('RCTView');
}
// These commands are Android only
interface NativeCommands {
+hotspotUpdate: (
viewRef: React.ElementRef<ViewNativeComponentType>,
x: Int32,
y: Int32,
) => void;
+setPressed: (
viewRef: React.ElementRef<ViewNativeComponentType>,
pressed: boolean,
) => void;
}
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
supportedCommands: ['hotspotUpdate', 'setPressed'],
});
export const __INTERNAL_VIEW_CONFIG = viewConfig;
export default ((NativeViewComponent: any): ViewNativeComponentType);