'Ошибка: `VideoPlayer` не имеет propType для собственного prop `VideoPlayerView.scaleY` собственного типа `number`

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. Единственное обнаруженное различие было в наличии файла act.gradle в проекте B.

Нет абсолютно никакой подсказки, где генерируется файл Reaction.gradle. Также я попытался перезапустить упаковщик, очистить здание проекта снова.

Зависимость gradle, используемая в проекте,

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

1 ответ

Следует определенно использовать последнюю версию, и способ, указанный в документации https://facebook.github.io/react-native/docs/native-components-android.html должен работать нормально.

Получается, что я использовал React версии 0.13+ (в package.json), а способ добавления свойств с использованием аннотации @Reactprop был введен в зависимости gradle 0.14, и этот способ не совсем хорошо работает со старой версией React- родной (0,13).

Если по какой-то причине вы работаете с 0.13 или pre, необходимо придерживаться способа смешивания реквизита вручную, как указано в https://github.com/facebook/react-native/issues/3478.

Другие вопросы по тегам