javascript - '错误 : `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number`

标签 javascript java android react-native custom-component

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/

相关文章:

java - 在保存的 txt 文件中排列文本

javascript - 强制 HTML 内部链接/片段标识符 (#) 重新加载页面

java - 如何在 Java 中比较一个数组中的两个整数?

java - 使用 Java 扫描器比较两个文件时的 NoSuchElementExcpetion

java - 对一个类使用 Get 方法但不对另一个类使用 Get 方法时出现 NullPointEException

android - 在 Android 上向 Chrome 浏览器添加书签

javascript - JS代码有什么问题,让我知道代码是否可以改进

javascript - HTML 自动刷新页面但先检查连接

javascript - 我如何在点击 'refresh' 时完全重新加载我的 Sencha Touch 应用程序?

java - java中十六进制转二进制