Added constraint of child type to touchablewithoutfeedback
Summary: Added constraint of child type to touchablewithoutfeedback to match touchablehighlight (this would have failed silently previously), also added the cloneWithProps as by note of @vjeux Closes https://github.com/facebook/react-native/pull/517 Github Author: Daniele Zannotti <d.zannotti@me.com> Test Plan: Imported from GitHub, without a `Test Plan:` line.
This commit is contained in:
parent
b6eeb61024
commit
a2fa40f684
|
@ -13,8 +13,10 @@
|
|||
|
||||
var React = require('React');
|
||||
var Touchable = require('Touchable');
|
||||
|
||||
var keyOf = require('keyOf');
|
||||
var onlyChild = require('onlyChild');
|
||||
var cloneWithProps = require('cloneWithProps');
|
||||
var ensureComponentIsNative = require('ensureComponentIsNative');
|
||||
|
||||
/**
|
||||
* When the scroll view is disabled, this defines how far your touch may move
|
||||
|
@ -49,6 +51,14 @@ var TouchableWithoutFeedback = React.createClass({
|
|||
return this.touchableGetInitialState();
|
||||
},
|
||||
|
||||
componentDidMount: function() {
|
||||
ensureComponentIsNative(this.refs[CHILD_REF]);
|
||||
},
|
||||
|
||||
componentDidUpdate: function() {
|
||||
ensureComponentIsNative(this.refs[CHILD_REF]);
|
||||
},
|
||||
|
||||
/**
|
||||
* `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
|
||||
* defined on your component.
|
||||
|
@ -78,8 +88,15 @@ var TouchableWithoutFeedback = React.createClass({
|
|||
},
|
||||
|
||||
render: function(): ReactElement {
|
||||
// Note(vjeux): use cloneWithProps once React has been upgraded
|
||||
var child = onlyChild(this.props.children);
|
||||
var child = cloneWithProps(
|
||||
onlyChild(this.props.children),
|
||||
{
|
||||
ref: CHILD_REF,
|
||||
accessible: true,
|
||||
testID: this.props.testID,
|
||||
}
|
||||
);
|
||||
|
||||
// Note(avik): remove dynamic typecast once Flow has been upgraded
|
||||
return (React: any).cloneElement(child, {
|
||||
accessible: true,
|
||||
|
@ -94,4 +111,6 @@ var TouchableWithoutFeedback = React.createClass({
|
|||
}
|
||||
});
|
||||
|
||||
var CHILD_REF = keyOf({childRef: null});
|
||||
|
||||
module.exports = TouchableWithoutFeedback;
|
||||
|
|
Loading…
Reference in New Issue