【问题标题】:'Error: `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number`'错误:`VideoPlayer`没有原生类型`number`的原生道具`VideoPlayerView.scaleY`的propType
【发布时间】: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


    【解决方案1】:

    绝对应该使用最新版本,并且文档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 中指定的手动混入 props 的方式。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-08-14
    相关资源
    最近更新 更多