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`
这个原生view对应的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文件是从哪里生成的。我还尝试重新启动 packager,再次清理项目构建。
项目中使用的gradle依赖为
compile "com.facebook.react:react-native:0.14.+"
最佳答案
绝对应该使用最新版本和文档中指定的方式 https://facebook.github.io/react-native/docs/native-components-android.html#content应该可以正常工作。
所以事实证明我使用的是 React 版本 0.13+(在 package.json 中)并且在 gradle 0.14 依赖项中引入了使用 @Reactprop 注释添加属性的方式,这种方式不适用于旧版本React-native(0.13).
如果由于某种原因你碰巧在 0.13 或 pre 上工作,请按照 https://github.com/facebook/react-native/issues/3478 中指定的手动混合 Prop 的方式必须遵守。
关于javascript - '错误 : `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971914/