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 React = require('React');
|
||||||
var Touchable = require('Touchable');
|
var Touchable = require('Touchable');
|
||||||
|
var keyOf = require('keyOf');
|
||||||
var onlyChild = require('onlyChild');
|
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
|
* 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();
|
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
|
* `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
|
||||||
* defined on your component.
|
* defined on your component.
|
||||||
|
@ -78,8 +88,15 @@ var TouchableWithoutFeedback = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function(): ReactElement {
|
render: function(): ReactElement {
|
||||||
// Note(vjeux): use cloneWithProps once React has been upgraded
|
var child = cloneWithProps(
|
||||||
var child = onlyChild(this.props.children);
|
onlyChild(this.props.children),
|
||||||
|
{
|
||||||
|
ref: CHILD_REF,
|
||||||
|
accessible: true,
|
||||||
|
testID: this.props.testID,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Note(avik): remove dynamic typecast once Flow has been upgraded
|
// Note(avik): remove dynamic typecast once Flow has been upgraded
|
||||||
return (React: any).cloneElement(child, {
|
return (React: any).cloneElement(child, {
|
||||||
accessible: true,
|
accessible: true,
|
||||||
|
@ -94,4 +111,6 @@ var TouchableWithoutFeedback = React.createClass({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var CHILD_REF = keyOf({childRef: null});
|
||||||
|
|
||||||
module.exports = TouchableWithoutFeedback;
|
module.exports = TouchableWithoutFeedback;
|
||||||
|
|
Loading…
Reference in New Issue