Permalink
Browse files

Add viewConfig to RCTSlider Component, fix #10158

Summary:
And check componet.viewConfig before call component.setNativeProps method.

FIX #10158
Closes #10238

Differential Revision: D4008640

Pulled By: javache

fbshipit-source-id: 1bf9b34c0e56f1ffbcd31ae64b3cbafe77a9a1fd
  • Loading branch information...
1 parent 4b7f84a commit c9960817eea008b2703657066212002557e0d939 @leeight leeight committed with Facebook Github Bot Oct 12, 2016
@@ -47,8 +47,6 @@ const {
const UIExplorerPage = require('./UIExplorerPage');
const UIExplorerBlock = require('./UIExplorerBlock');
-const AnimatedImage = Animated.createAnimatedComponent(Image);
-
type State = {
toggleStatus: any,
pan: Object,
@@ -116,7 +114,7 @@ function AnimationBlock(props) {
return (
<View style={styles.block}>
<TouchableWithoutFeedback onPress={props.onPress}>
- <AnimatedImage
+ <Animated.Image
style={[styles.img, props.imgStyle]}
source={require('./Thumbnails/poke.png')}
/>
@@ -1715,6 +1715,12 @@ function createAnimatedComponent(Component: any): any {
var callback = () => {
if (this._component.setNativeProps) {
if (!this._propsAnimated.__isNative) {
+ if (this._component.viewConfig == null) {
+ var ctor = this._component.constructor;
+ var componentName = ctor.displayName || ctor.name || '<Unknown Component>';
+ throw new Error(componentName + ' "viewConfig" is not defined.');
@gre
gre Nov 19, 2016 Contributor

I have a lib (gl-react-native) that uses Animated.createAnimatedComponent(GLCanvas) but don't define viewConfig, how should I do it?

IMO this should have been raised as "Breaking changes" in 0.37.0

@leeight
leeight Nov 19, 2016 Contributor

Could you cherry-pick this commit: 31b7819

@gre
gre Nov 19, 2016 Contributor

oh great, thanks

+ }
+
this._component.setNativeProps(
this._propsAnimated.__getAnimatedValue()
);
@@ -13,6 +13,7 @@
var Image = require('Image');
var NativeMethodsMixin = require('react/lib/NativeMethodsMixin');
+var ReactNativeViewAttributes = require('ReactNativeViewAttributes');
var Platform = require('Platform');
var PropTypes = require('react/lib/ReactPropTypes');
var React = require('React');
@@ -139,6 +140,14 @@ var Slider = React.createClass({
};
},
+ viewConfig: {
+ uiViewClassName: 'RCTSlider',
+ validAttributes: {
+ ...ReactNativeViewAttributes.RCTView,
+ value: true
+ }
+ },
+
render: function() {
const {style, onValueChange, onSlidingComplete, ...props} = this.props;
props.style = [styles.slider, style];

0 comments on commit c996081

Please sign in to comment.