jay shah
jay shah

Reputation: 993

'Error: `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number`

VideoPlayerView is a custom native component made in Android and IOS for my particular project.

Here is a part of code exporting native module named VideoPlayerView made by ReactVideoManager.java

public class ReactVideoManager extends  SimpleViewManager<MeasureChangedVideoView> {

    public static final String REACT_CLASS = "VideoPlayerView";

    private ThemedReactContext mReactContext;

    @Override
    public String getName() {
        return REACT_CLASS;
    }

    @Override
    protected MeasureChangedVideoView createViewInstance(ThemedReactContext reactContext) {
        mReactContext = reactContext;
        return new MeasureChangedVideoView(reactContext);
    }

    @ReactProp(name = "url")
    public void setUrl(MeasureChangedVideoView view, @Nullable String url) {
        Uri uri = Uri.parse(url);
        view.setVideoURI(uri);
        view.setMediaController(new MediaController(mReactContext));

        view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });
    }
}

Below is the error log found for the module:

Error: `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number`

The corresponding js component for this native view is VideoPlayer.js:

var React = require('react-native');
var { requireNativeComponent } = React;

class VideoPlayer extends React.Component {
  render() {
    return <VideoPlayerView {...this.props} />;
  }
}
VideoPlayer.propTypes = {
  url: React.PropTypes.string
};

var VideoPlayerView = requireNativeComponent('VideoPlayerView', VideoPlayer);
module.exports = VideoPlayer;

The very same module used to work in a different project B. The only difference found was presence of a react.gradle file in project B.

There is absolutely no clue where react.gradle file is generated. Also I tried restarting packager, cleaning the project building again.

The gradle dependency used in project is

compile "com.facebook.react:react-native:0.14.+"

Upvotes: 3

Views: 575

Answers (1)

jay shah
jay shah

Reputation: 993

One should definitely use the latest version and the way specified in docs https://facebook.github.io/react-native/docs/native-components-android.html#content should work fine.

So It turns out that I was using React version 0.13+ (in package.json) and the way of adding properties using @Reactprop annotation was introduced in gradle 0.14 dependency and this way doesn't quite work well with the older version of React-native(0.13).

If due to some reason you happen to work on 0.13 or pre, the way of mixing in of props manually as specified in https://github.com/facebook/react-native/issues/3478 must be followed.

Upvotes: 1

Related Questions