'错误:`VideoPlayer`没有原生类型`number的本地道具`VideoPlayerView.scaleY`的propType

时间:2015-11-28 13:32:50

标签: javascript java android react-native custom-component

VideoPlayerView是Android和IOS为我的特定项目制作的自定义本机组件。

以下是导出由VideoPlayerView

生成的名为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();
            }
        });
    }
}

以下是为模块找到的错误日志:

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

此本机视图的相应js组件是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;

用于在不同项目中工作的相同模块B.发现的唯一区别是项目B中存在react.gradle文件。

绝对没有关于生成react.gradle文件的线索。此外,我尝试重新启动打包器,再次清理项目构建。

项目中使用的gradle依赖是

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

1 个答案:

答案 0 :(得分:1)

一定要使用最新版本,文档https://facebook.github.io/react-native/docs/native-components-android.html#content中指定的方式应该可以正常使用。

所以事实证明我使用的是React版本0.13+(在package.json中),并且使用@Reactprop注释添加属性的方式是在gradle 0.14依赖项中引入的,这种方式并不适用于旧版本的React-native(0.13)。

如果由于某种原因你碰巧在0.13或之前工作,必须遵循https://github.com/facebook/react-native/issues/3478中指定的手动混合道具的方式。