【发布时间】:2016-03-02 12:19:29
【问题描述】:
VideoPlayerView 是在 Android 和 IOS 中为我的特定项目制作的自定义原生组件。
这是由ReactVideoManager.java制作的名为VideoPlayerView的本机模块导出代码的一部分
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.+"
【问题讨论】:
标签: javascript java android react-native custom-component